Vì vậy, tôi đã có một chức năng ucwords đơn giản cho Perl mà tôi đã có một thời gian, và muốn mở rộng nó, đây là những gì tôi đã đưa ra, đây có phải là cách tôi nên xây dựng các chức năng của tôi để xử lý tùy chọn thông số?Đây có phải là cách để xây dựng các chương trình con Perl không?
gốc:
sub ucwords{
$str = @_[0];
$str = lc($str);
$str =~ s/\b(\w)/\u$1/g;
return $str;
}
Extended:
sub ucwords{
if(@_[0] ne undef){#make sure some argument was passed
@overloads = (0,1,2,3);
$str = @_[0];
if(@_[1] eq undef || @_[1] eq 0){ #default is to lowercase all but first
$str = lc($str);
$str =~ s/\b(\w)/\u$1/g;
return $str;
}else{ #second parameters
if(!grep $_ eq @_[1], @overloads){ die("No overload method of ucwords() takes "[email protected]_[1]." as second parameter."); }
if(@_[1] eq 1){ $str =~ s/\b(\w)/\u$1/g;} #first letter to upper, remaining case maintained
if(@_[1] eq 2){ $str = lc($str); $str =~ s/(\w)\b/\u$1/g;} #last letter to upper, remaining to lower
if(@_[1] eq 3){ $str =~ s/(\w)\b/\u$1/g;} #last letter to upper, remaining case maintained
return $str;
}
}else{
die("No overload method of ucwords() takes no arguments");
}
}
Psy
tl; dr, nhưng mã của bạn có làm việc này không? 'join '' map {ucfirst} chia/(\ s +)/$ string'? – Ether
@Psytronic bạn nên đọc «perldoc perlsub': http://perldoc.perl.org/perlsub.html –
Cảm ơn lời khuyên, tôi đã không tìm kiếm ý kiến về chính chức năng này, tôi biết có lẽ tốt hơn cách thực hiện công việc, đó là nhiều ý kiến về cách tôi xây dựng nó, vì tôi không muốn làm những điều sai trái ngay từ đầu và lặp đi lặp lại nó nhiều lần. – Psytronic