print sentence.scan(/\[(\w+)\]/).all? do |word|
@words.keys.include? word[0].to_sym
end
我打印的@words.keys.include? word[0].to_sym
個人的價值觀和他們並不都是真實的,但它打印true
。我認爲這可能是因爲它的評估,像這樣:紅寶石評估順序
(print sentence.scan(/\[(\w+)\]/).all?) do |word|
@words.keys.include? word[0].to_sym
end
但我想它來評價像
print (sentence.scan(/\[(\w+)\]/).all? do |word|
@words.keys.include? word[0].to_sym
end)
然而,增加在
syntax error, unexpected keyword_do_block, expecting ')'
括號結果如何我改變評估代碼片段的順序?
編輯:
我想,而不是打印返回true,除非上面是真實的,如:
@sentences.reject do |sentence|
!(sentence.scan(/\[(\w+)\]/).all? { |word| @words.keys.include? word[0].to_sym })
end
但它拒絕一切。
啊,是的,謝謝。爲什麼do ...不能用圓括號工作? – 2012-07-19 21:15:58
也許是因爲解析器,它在每種情況下都不會很聰明,請參閱第二個變體。 – megas 2012-07-19 21:19:16