0

次のコードを実行する必要があります

if var == 1
  #some code #1
elsif var == 2
  #some code #1 + some code #2
elsif var == 3
  #some code #1 + some code #2 + some code #3
elsif var == 4
  #some code #1 + some code #2 + some code #3 + some code #4
end

コードを複製せずに、どのように書き直すことができますか?

4

4 に答える 4

2

副作用を実行したいと思います。オプションは、コードをブロックに移動して自由に実行することです。呼び出しはすべて同種であると仮定します。

proc1 = proc { ... }
proc2 = proc { ... }
proc3 = proc { ... }

case var
when 1
  proc1.call
when 2
  proc1.call
  proc2.call
when 3
  proc1.call
  proc2.call
  proc3.call
end

これは次と同等です:

[proc1, proc2, proc3, ....].take(var).each(&:call)
于 2013-03-06T10:10:34.080 に答える
0

さまざまなメソッドを作成して呼び出します。

def method1
  return "Do "
end

def method2
  return "you "
end

def method3
  return "believe "
end

def method4
  return "in magic"
end

print "Type in a number between 1-4\nNumber: "
number = gets.chomp.to_i

case number
  when 1
    puts method1
  when 2
    puts method1 + method2
  when 3
    puts method1 + method2 + method3
  when 4
    puts method1 + method2 + method3 + method4
  else
    puts "Something something..."
end
于 2013-03-06T09:50:30.050 に答える