如何在Ruby中提取整数的符号?

Ale*_*pov 18 ruby function

我需要一个函数来返回/打印整数上的符号.到目前为止,我想出了这个:

def extract_sign(integer)
  integer >= 0 ? '+' : '-'
end
Run Code Online (Sandbox Code Playgroud)

是否有内置的Ruby方法可以做到这一点?

saw*_*awa 42

这是一个简单的方法:

x = -3
"++-"[x <=> 0] # => "-"

x = 0
"++-"[x <=> 0] # => "+"

x = 3
"++-"[x <=> 0] # => "+"
Run Code Online (Sandbox Code Playgroud)

要么

x = -3
"±+-"[x <=> 0] # => "-"

x = 0
"±+-"[x <=> 0] # => "±"

x = 3
"±+-"[x <=> 0] # => "+"
Run Code Online (Sandbox Code Playgroud)

  • 很棒:) :) :) (2认同)
  • 这是我在很长一段时间里见过的更令人满意的红宝石表达之一.我不能说它也具有平凡的透明度,但我认为看到它教会重要的事情. (2认同)

Dou*_*len 12

我认为没有一个只给出-1或+1的方法是无稽之谈.甚至BASIC也具有SGN(n)这样的功能.当我们想要使用的数字时,为什么我们必须处理字符串.但那只是MHO.

def sgn(n)
  n <=> 0
end.
Run Code Online (Sandbox Code Playgroud)


Ste*_*fan 5

您可以Kernel#sprintf用来格式化数字:

def sign(i)
  sprintf("%+d", i)[0]
end

sign(100)  #=> "+"
sign(-100) #=> "-"
Run Code Online (Sandbox Code Playgroud)