簡體   English   中英

我應該在Perl中使用autobox嗎?

[英]Should I use autobox in Perl?

對於那些不了解Perl的autobox的人autobox ,它是一個模塊,它為你提供內置基元的方法,甚至可以覆蓋它們。

# primitives
'a string'->toupper();
10->to(1); # returns [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

# Arrays, array refs
[qw(A B C D E)]->for_each( sub { ... } );
@array->length()

# Hashes, hash refs
{ key => 'value', key2 => 'value2' }->values()
%hash->keys()

# Even specify your own base class...
use autobox SCALAR => 'Foo';

總體而言,內置類型的方法更像是對象,簡化了一些任務,使其他任務變得更加明顯。

然而...

autobox docs表示存在性能損失 ,不僅僅是簡單地調用對象上的方法,而不僅僅是標准語法。 然后,有一些關於它在eval使用的警告(特別是字符串evals),在某些情況下可能導致問題。 它看起來似乎沒有標准的許多Perl發行版。

使用autobox真的值得嗎?

好吧,你有沒有希望在你發現autobox之前有一個模塊可以做autobox呢?

如果答案是'是',那么你應該使用它。 您可能還希望通過提交錯誤報告並在獲得機會時修復它們來為其開發做出貢獻。

不幸的是,我陷入了“酷,但......”的陣營,所以我無法為你提供更多的見解。

馬課程! 然而,從左到右閱讀鏈條往往更容易理解恕我直言:

say sort grep /\w/, map { chr } 0 .. 255;

雖然較短的下方確實更好地流動:

say [ 0..255 ]->map( sub { chr } )->grep( sub { m/\w/ } )->sort->join(''); 

來自Hacker News評論的參考: 片段

/ I3az /

我使用autobox:

$c->login($c->req->{params}->hslice([qw/username password/])

最終采用任意哈希並將其減少為{ username => <whatever>, password => <whatever> } 通常很多代碼。 Moose :: Autobox的一個符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM