Ruby on rails 调用函数直到(带调用限制)
我有一个生成随机输出(字符串)的函数 我需要调用该函数,直到得到3个不同的输出(字符串) 通过调用函数来生成包含3个唯一字符串的数组的最优雅的方法是什么?如果在指定的尝试次数内未生成输出,则函数可以被调用多少次 以下是我目前拥有的:Ruby on rails 调用函数直到(带调用限制),ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个生成随机输出(字符串)的函数 我需要调用该函数,直到得到3个不同的输出(字符串) 通过调用函数来生成包含3个唯一字符串的数组的最优雅的方法是什么?如果在指定的尝试次数内未生成输出,则函数可以被调用多少次 以下是我目前拥有的: output = [] limit_calls = 5 limit_calls.times do |i| str = generate_output_function output.push str break if output.uniq.size &
output = []
limit_calls = 5
limit_calls.times do |i|
str = generate_output_function
output.push str
break if output.uniq.size > 2
end
这个可以被美化/缩短为1行吗?我对ruby很有把握:)
谢谢使用套装会(稍微)更方便:
require'set'
输出=设置为新
限制通话次数=5次
呼叫计数=0
当output.size<3且call\u count
require'set'
输出=设置为新
限制通话次数=5次
呼叫计数=0
当output.size<3且call\u count 输出Froderik的回答遗漏了呼叫限制要求。那么像…这样的函数呢
def unique_string_array(call_limit)
output = []
calls = 0
until (output.size == 3 || calls == call_limit) do
(output << generate_output_function).uniq! && calls+=1
end
output
end
def唯一字符串数组(调用限制)
输出=[]
呼叫数=0
直到(output.size==3 | | calls==call_limit)完成
(输出Froderik的回答忽略了调用限制要求。那么像
def unique_string_array(call_limit)
output = []
calls = 0
until (output.size == 3 || calls == call_limit) do
(output << generate_output_function).uniq! && calls+=1
end
output
end
def唯一字符串数组(调用限制)
输出=[]
呼叫数=0
直到(output.size==3 | | calls==call_limit)完成
(失去limit_调用要求的输出,但您可以通过更改(在第二个示例中)将其恢复到,而失去limit_调用要求的output.size
,但您可以通过更改(在第二个示例中)将其恢复到原来的状态。)当output.size
5.times.inject([]) { |a, el| a.uniq.size < 3 ? a << generate_output_function : a }
def unique_string_array(call_limit)
output = []
calls = 0
until (output.size == 3 || calls == call_limit) do
(output << generate_output_function).uniq! && calls+=1
end
output
end