簡體   English   中英

將塊放在一行上的語法

[英]Syntax for putting a block on a single line

所以我有一個像這樣的Ruby方法:

def something(variable, &block)
  ....
end

我想這樣稱呼它:

something 'hello' { do_it }

除非這對我不起作用,否則我會收到語法錯誤。 如果我這樣做,它的工作原理:

something 'hello' do
  do_it
end

除了那里,我有點想念它在一條線上的漂亮外觀。

我可以看到為什么會發生這種情況,因為它看起來像是一個哈希作為第二個變量傳遞,但變量之間沒有逗號...但我認為必須有一種方法來處理這個我'我失蹤了。 在那兒?

你需要用括號括起你的論點:

something('hello') { do_it }

這應該工作。

如果你想要“def something”來接受一個塊,你需要向該塊產生數據。 例如:

#to uppercase string
def something(my_input)
 yield my_input.upcase
end

# => "HELLO WORLD"
something("hello world") { |i| puts i}

呃,怎么樣:

>> def something(arg1 , &block)
>>   yield block
>> end
=> nil
>> def do_it
>>   puts "Doing it!"
>> end
=> nil
>> something('hello') { do_it }
"Doing it!"
=> nil

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM