Perl에서 변경하고 싶은 5가지(구문) 사항
내가 불편하다고 느끼는 몇 가지 Perl 구문이 있습니다.
이것은 나의 5가지 목록입니다! 😃
변형 인장
원본은 아니지만 불변의 인장이 나에게 의미가 있을 것입니다.
나는 컨텍스트나 슬라이스를 삭제하자고 주장하는 것이 아닙니다(전혀 아님). 그러나 불변 표지(컨테이너 유형이 무엇인지 간단히 보여줌)를 사용하면 기분이 더 나아질 것입니다.
(Raku이 이것을 하고 있습니다)
같은 종류의 일에서
$var
와 @var
가 다른 %var
(등 ...)은 멋지지만 위험합니다.배열 및 해시 선언
{}
를 사용하여 해시(hashref가 아님)를 선언하고 []
를 사용하여 array(arrayref가 아님)를 선언하는 것을 선호합니다.이러한 기호는 우리가 요소에 액세스하는 데 사용하는 것과 동일하며, 나에게는 의미가 있습니다.
작업 펄 :
# Hash
my %h = ( k1 => "1", k2 => "2" );
print $h{'k2'};
# Array
my @a = ( "a", "b" );
print $a[1];
# Hashref
my $h = { k1 => "1", k2 => "2" };
print $h->{'k2'};
# Arrayref
my $a = [ "a", "b" ];
print $a->[1];
{}
는 해시 키에 액세스하기 위한 기호이고 []
는 배열 인덱스에 액세스하기 위한 기호인데 왜 해시*ref* 및 배열*ref*에 연결되어 있습니까?그리고 단순히 refs에 참조 연산자
\
를 재사용하는 것은 어떻습니까?가상 코드 :
# Hash
my %h = { k1 => "1", k2 => "2" }; # Same symbol to declare and access
print $h{'k2'};
# Array
my @a = [ "a", "b" ]; # Same symbol to declare and access
print $a[1];
# Hashref
my $h = \{ k1 => "1", k2 => "2" }; # \ is the "get ref" symbol
print $h->{'k2'};
# Arrayref
my $a = \[ "a", "b" ]; # \ is the "get ref" symbol
print $a->[1];
물론 배열/해시 변환, 배열 평면화 및 콤마와 같은 기능이 마음에 들지만 arrayref 및 hashref를 선언하는 방법이 약간 혼란스럽습니다.
누락된 쉼표
파일 핸들로 인쇄할 때 정당하지만 오류가 발생하기 쉬운 누락된 쉼표:
print $fh ARGS
기분이 좋지 않습니다./
핵심에서 더 나은 OO
좋아요 (1), 모듈을 설치하는 문제일 뿐입니다...
좋아요 (2), Cor 😃과 함께 옵니다
함수 프로토타입 또는 서명에 대해 여전히 명확하지 않음
함수 선언에 무엇을 사용해야 하는지 아직 확실하지 않습니다. 그것에 관한 몇 가지 리소스 :
프로토타입이나 함수 서명이 필요합니다.
나는 일반적으로 파일의 맨 위에 주석과 함께 모든 기능을 선언합니다.
# Describe fn
sub fn($$;$);
명확성을 위해 그리고 매개변수를 확인하기 때문에 이 작업을 수행합니다(
&
로 호출되지 않은 경우).또한 댓글로 모든 사전 선언을 수집하므로 인간을 위한 API를 제공합니다😄
"사전 선언"도 필요할 수 있습니다(순서에 따라 그리고 괄호 없이 하위를 호출하는 경우). 하지만 이것이 주요 목표는 아닙니다(다시
&
로 우회할 수 있음).그런 다음 다음과 같이 기능을 정의합니다.
sub fn($$;$) {
my $name = shift;
my $age = shift;
my $optional_comment = shift;
...
}
내가 선호하는 것 :
sub fn($$;$) {
my ($name, $age, $optional_comment) = @_;
...
}
또는 더 나쁜 (😱) :
sub fn($$,$) {
print $_[0];
print $_[1];
print $_[2];
...
}
하지만 솔직히 잘 모르겠습니다.
signatures
는 실험적이라고 표시되어 있고 prototypes
는 함수의 동작을 변경하기 때문에 사용해서는 안 됩니다.그렇다면 올바른 방법은 무엇입니까?
결론
그게 다야, 그게 내 목록이야! 😃
당신은 무엇입니까?
Reference
이 문제에 관하여(Perl에서 변경하고 싶은 5가지(구문) 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thibaultduponchelle/five-syntax-things-that-i-would-like-to-change-in-perl-ml6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)