의 펄 상응하는 무엇입니까?파이썬의 유형 내가 파이썬에서이 작업을 수행 할 수 있습니다() 함수
답변
Perl은 파이썬이나 루비의 방식과 달리 문자열과 숫자를 구별하지 않습니다. Perl에서는 연산자를 사용하여 변수의 해석 방법을 결정합니다.
파이썬에서는 1 + 2
을 쓸 때 파이썬은 각 인수의 유형을 확인하고 숫자임을 확인한 다음 추가 (3
)를 수행합니다. '1' + '2'
을 쓰면 두 문자열 모두를보고 연결을 수행합니다 ('12'
). 1 + '2'
을 쓰면 유형 오류가 발생합니다.
Perl에서 1 + 2
을 쓸 때 +
연산자는 해당 인수에 숫자 컨텍스트를 적용합니다. 각 인수는 숫자로 변환되고 (인수가 깔끔하게 변환 될 수없는 경우 후속 경고가 있음) 추가가 수행됩니다 (3
). '1' + '2'
을 작성하면 인수는 여전히 3
의 결과를 갖는 숫자로 변환됩니다.
연결을 원할 경우 연산자 인 1 . 2
을 사용하면 두 인수가 모두 숫자 임에도 불구하고 '12'
이됩니다.
Perl 연산자가 형식 해석을 강제하므로 변수 자체에 형식이 필요하지 않으며 형식을 포함하지 않습니다.어느 것이 어떤 것인지를 정말로 결정할 필요가 있다면, Scalar::Util
의 looks_like_number
함수를 사용할 수 있지만 일반적으로 Perl에서의 코딩은 디자인 문제를 나타냅니다. 프리미티브 유형의 참조를 할 수
- 번호
- 문자열
- 부정 값 (
undef
) - 참조 (:
펄 스칼라 변수는 4 가지 중 하나를 포함 할 수있다 또는 객체에)
ref
키워드는 스칼라에 참조가 포함되어 있으면 해당 참조가 어떤 유형인지를 나타냅니다.
ref(1) --> '' (a false value)
ref('string') --> '' (a false value)
ref([1, 2, 3]) --> 'ARRAY'
ref({a => 1}) --> 'HASH'
ref(\1) --> 'SCALAR'
ref(\\1) --> 'REF'
ref(sub {}) --> 'CODE'
전체 목록
그 참조 대상이되고, perldoc -f ref기준 패키지에 bless
인 ED에서 찾을 수있다. 이 경우 ref
은 객체가 축복받은 패키지의 이름을 반환합니다.
{package My::Object;
sub new {bless {}}
}
my $obj = My::Object->new;
ref($obj) --> 'My::Object'
당신이 뭔가 당신이 시도 할 수 정수가 있는지 확인하려면 다음
use Scalar::Util;
if (defined $value
&& !ref $value
&& ref \$value eq 'SCALAR'
&& Scalar::Util::looks_like_number($value)
&& $value =~ /^-?[0-9]+$/msx
) {
printf '%s is an integer', $value;
}
그것이 무엇인지는 아닙니다.) 'ref'는 참조가 어떤 데이터 유형인지, 참조가 전혀 없는지 알아내는 데 사용할 수 있습니다.
AFAIK, 타이핑은 펄에서와 똑같은 것을 의미하지 않기 때문에 실제 동등한 것은 없습니다.
Params::Util::_POSINT
은 스칼라가 양의 정수인지 확인하는 좋은 표준 방법입니다. 스칼라는_INTEGER
기능이없는 이유를 잘 모르겠어요 양의 정수 또는 0
경우
Params::Util::_NONNEGINT
을 확인하는 좋은 방법입니다. 개체 인을 다루는 경우 현대적인 확인 방법은 Scalar::Util::blessed
입니다. ref
은 수행하지만 unblessed 참조에는 값을 리턴하지 않습니다. (어느 펄에입니다있는 개체를.)
펄과 TIMTOWTDI (YMMV)의 아름다움은 당신이 스니핑 방법을 결합하여 당신이 원하는 무엇을 만들 수 있다는 것입니다. 모듈에 고정시키고 재사용하십시오.
- 1. JQuery 함수 작업을 수행 할 수 없습니다.
- 2. 입력 유형 = "파일"에서이 작업을 수행 할 수 있습니까?
- 3. 스토어 문자열 목록은 내가이 작업을 수행 할 수 있습니다
- 4. C++ : 정적 내가 지금은 전역 범위에서이 작업을 수행 할 수 있습니다
- 5. 모든 .NET 컨트롤이 작업을 수행 할 수 있습니다 제품
- 6. jquery로이 작업을 수행 할 수 있습니까?
- 7. 하나의 루프에서이 작업을 수행 할 수 있습니까?
- 8. 내가이 작업을 수행 할 수 스칼라
- 9. 하나의 쿼리로이 작업을 수행 할 수 있습니까?
- 10. PHP로이 작업을 수행 할 수 있습니까?
- 11. 글꼴 얼굴 작업을 수행 할 수 없습니다.
- 12. jsf에서이 작업을 수행 할 수 있습니까?
- 13. 반성없이이 작업을 수행 할 수 있습니까?
- 14. 자동 매퍼는이 작업을 수행 할 수 있습니까?
- 15. LINQ가이 작업을 수행 할 수 있습니까?
- 16. 스키닝으로이 작업을 수행 할 수 있습니까?
- 17. 어떤 언어로이 작업을 수행 할 수 있습니까?
- 18. OpenGL에서이 작업을 수행 할 수 있습니까?
- 19. OpenGL을 사용하여이 작업을 수행 할 수 있습니까?
- 20. jQuery 숨기기 작업을 수행 할 수 없습니다.
- 21. 하나의 명령으로이 작업을 수행 할 수 있습니까?
- 22. 파이썬에서 파일 작업을 수행 할 수 있습니까?
- 23. ORM으로이 작업을 수행 할 수 있습니까? - Django
- 24. 하나의 쿼리에서이 작업을 수행 할 수 있습니까?
- 25. .NET AppDomains가이 작업을 수행 할 수 있습니까?
- 26. 동기식 AJAX없이이 작업을 수행 할 수 있습니까?
- 27. 왜 wdiff 내가 bash는이 작업을 수행 할 수 있습니다 와서 어떻게 명명 된 파이프
- 28. ASP.NET 라우팅에서이 작업을 수행 할 수 있습니까?
- 29. list() 작업을 수행 할 수 없습니다.
- 30. CSSCount 작업을 수행 할 수 없습니다.
하나 있다고 가정하고 있습니다. 올바른 질문은 "Perl과 동등한가?"입니다. –
어떻게 이런 어리 석음이 5 번 upvoted 얻을 수 있습니까? – frankc
@fra 무엇? 어디에? – Tshepang