2017-12-22 29 views

답변

2

trueyness 검사보다는 정의가 필요한 경우 say [1, 2, Any].all.defined을 사용하여 정의 된 메소드 호출을 교차점에서 자동 읽기 할 수 있습니다.

say [1, 2, True].all.defined # True 
say [1, Int, True].all.defined # False 
6

첫째, (Any)하지List, (Any,)입니다 (쉼표에 유의)입니다. 첫 번째 경우를 배열로 지정해야합니다 (예 : [Any]). 당신이 목록을,이 목록에있는 요소의 수를 취할 것 (AN Array 또는 이러한 맥락에서 List는 의미 소문자 목록) so을 제공하는 경우 그렇지 않으면

:-) 오렌지와 사과를 비교하고 그래서 모든 목록을 그 적어도 하나의 요소를 가지고, 사실을 줄 것이다.

질문에 답하려면 여러 가지 방법이 있지만 모두 목록의 일부만보아야합니다. [&&]는 기본적으로 말하는

say so [&&] (1,Any,3); # False 
say so [&&] (1,2,3); # True 

: 1 && Any && 31 && 2 && 3을 당신이 당신의 목록 0 또는 빈 문자열을 포함하지 않는 것이 확실한 경우, 당신은 간단하게 뭔가를 할 수 있습니다. .map 이미 만드는이 경우에 당신의 so을 할 필요가 없습니다

say [&&] (1,Any,3).map: *.defined; # False 
say [&&] (1,0,3).map: *.defined; # True 

참고 : 당신이 확신 할 수없는 경우

, 당신은 추가 단계를 수행해야합니다 값은 True 또는 False입니다. 나는 독자가 더 빨리 뭔가를 할 수있는 연습으로 이것을 떠날 것입니다. .first.

+0

고마워요! 나는 'so 0 == False'를 잊어 버렸습니다. –

+1

사실, 수정되었습니다. 감사! –