2012-08-17 6 views

답변

14

그냥 다음과 같은 해시 참조로 드롭 목록을 만들려면지도를 사용

my $has_field = { map { $_ => 1 } @fields }; 
3

업데이트 : 죄송합니다, 이것은하지 않습니다 $ has_field를 먼저 선언해야하므로 정확히 원하는 것을 수행하십시오.

당신은 해시 조각을 사용할 수

@{$has_field}{@fields} = (1)[email protected]; 

오른편은 (배열의 요소, 즉 수) @fields의 스칼라 값을 반복 할 x 연산자를 사용한다. 같은 맥락에서 또 다른 옵션 :

나는 조회 해시를 생성하고 값 번 을 테스트 한 빨리 그것을 smart match 2 회 5가 될 수 있습니다 테스트 한
@{$has_field}{@fields} = map {1} @fields; 
+0

올바르게 작동하지만'use strict; '를 사용할 때'$ has_field'를 별도로 선언해야합니다. 그래도 여전히 좋은 트릭입니다. –

2

. 당신이 해시에게 시간의 좋은 번호를 다시 사용하려고하지 않는 한 그래서, 스마트 일치 할 최선의 방법 :

if ($cand_field ~~ \@fields) { 
    do_with_field($cand_field); 
} 

그것은 5.10 이후, 펄 지금은 방법이 기억하는 좋은 일을 기본에 "이 값은 테스트되지 않은 값입니다."라고 물으면 스마트 일치입니다.

+0

이 위대한 팁을 가져 주셔서 감사합니다. 확실히 사용하도록 할 것입니다. – dan1111