Ruby 如果用户未为函数输入参数,则返回“false”用户?

Ruby 如果用户未为函数输入参数,则返回“false”用户?,ruby,Ruby,假设我有这样一个函数: def f(n) z = 0 sum = 0 while z <= n sum = sum + z z = z + 1 end return sum end def f(*args) if args.length == 1 n = args.first z = 0 sum = 0 while z <= n sum = sum + z

假设我有这样一个函数:

def f(n)
 z = 0
 sum = 0
      while  z <= n 
      sum = sum + z
      z = z + 1
      end 
 return sum
 end
 def f(*args)
   if args.length == 1
     n = args.first
     z = 0
     sum = 0
     while  z <= n
       sum = sum + z
       z = z + 1
     end
     return sum
   else
     return false
   end
 end
当用户没有为函数输入参数时,即在计算f时,如何返回false


谢谢你的帮助

您可以设置n的默认值,如下所示

def f(n = nil)
 return false if n.nil?
 z = 0
 sum = 0
      while  z <= n 
        sum = sum + z
        z = z + 1
      end 
 return

您可以在方法中使用动态长度参数,并检查是否只有一个参数存在,如下所示:

def f(n)
 z = 0
 sum = 0
      while  z <= n 
      sum = sum + z
      z = z + 1
      end 
 return sum
 end
 def f(*args)
   if args.length == 1
     n = args.first
     z = 0
     sum = 0
     while  z <= n
       sum = sum + z
       z = z + 1
     end
     return sum
   else
     return false
   end
 end

哦,酷,这是一个巧妙的把戏。如果我可以问的话,args前面的星号的作用是什么?它以数组的形式保存所有参数。如果你传递类似于f1,2,3的东西,那么args等于[1,2,3],因为有星号。方法中的可变长度参数应使用星号。谢谢!看起来就像是将括号中的变量n设置为nil,这会一直返回false。为什么这里不会发生这种情况?当您将值传递给函数时,n不会是nil请注意,这仅在nil不是有效的参数值时有效。否则,如果没有无效的参数值,则需要使用def fn=n_not_set=true;零把戏。