Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 一行中数字的测试变量_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 一行中数字的测试变量

Ruby on rails 一行中数字的测试变量,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在另一个网站上找到了这个代码 我不想使用方法返回true或false,而是希望在if语句中的一行中执行“is_numeric”测试。有人能解释一下这是否可能吗?当字符串变量为null和包含非数字字符时,我都会遇到错误 if Float(string) * do something else * do something else end 如果Float()是无意义的代码,因为Float()将返回真实值或引发错误(根据我对-的有限了解,在编写时,您可以遵循中的代码路径)。我建议你问错了

我在另一个网站上找到了这个代码

我不想使用方法返回true或false,而是希望在if语句中的一行中执行“is_numeric”测试。有人能解释一下这是否可能吗?当字符串变量为null和包含非数字字符时,我都会遇到错误

if Float(string)
  * do something
else
  * do something else
end
如果Float()
是无意义的代码,因为
Float()
将返回真实值或引发错误(根据我对-的有限了解,在编写时,您可以遵循中的代码路径)。我建议你问错了问题/看错了问题(了解你真正想要实现的目标会很有帮助)

要在一行上使用
Float()
并避免破坏代码,请使用
rescue
作为语句修饰符,就像在
is\u number?
方法中所做的那样

Float(string) rescue 0.0 # trying to emulate String#to_f!

确保电话号码仅为10位数字非常简单

PHONE_NUM_LENGTH = 10
string.length == PHONE_NUM_LENGTH && string.count('0-9') == PHONE_NUM_LENGTH
将返回表示此检查的真/假值。这比正则表达式更有效

第一部分,

string.length == PHONE_NUM_LENGTH
检查字符串的长度是否为10个字符。第二,

string.count('0-9') == PHONE_NUM_LENGTH

检查它是否正好有10个数字字符。

如果Float(string)rescue false,我看不出
true有什么问题。它似乎在做你要求的事情。我是否误解了这个问题?在本例中,您不能使用
if
,因为类似
Float(“blah”)
的内容会引发异常。@Kimball-我试图将if结构与这个Float(string)测试结合使用。在我的应用程序中,方法并不是一种干净的方法,一行就更好了。@Powers-这就是导致我提出这个问题的原因。方法结构对异常使用rescue。当使用if结构时,该如何传输?@La comadreja-是的,我正在测试数字字符,电话号码。我最终使用了一个正则表达式,但我希望用这种结构来增加我的武器库。regex可能是我使用电话号码的正确方法,但你永远不知道这个系统在哪里更有用。谢谢你,但这与最初的问题有很大的出入。我想知道浮子是否可以用鞋尖固定在if结构中。你说的“浮子可以用鞋尖固定在if结构中”是什么意思?我不明白用鞋尖固定需要什么。
if Float(string)
  * do something
else
  * do something else
end