Ruby Float to String错误

Mic*_*ael 9 ruby

Ruby新手.这段代码出了什么问题?

city_details['longitude'] + "," + city_details['latitude']
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

./player_location.rb:6:in `+': String can't be coerced into Float (TypeError)
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 12

它看起来像city_details['longitude']city_details['latitude']Float值.

你不能像这样添加FloatStringRuby中.您可以将所有内容转换为String,然后将+它们转换为或使用字符串插值.

city_details['longitude'].to_s + "," + city_details['latitude'].to_s

"#{city_details['longitude']},#{city_details['latitude']}"
Run Code Online (Sandbox Code Playgroud)

大多数Rubyist倾向于使用String插值.

  • 插值更快,因为ruby创建一个唯一的String对象,而使用'+'为每个操作数创建一个String.这就是大多数红宝石使用插值的原因. (2认同)

Amo*_*tir 6

它抱怨你正在尝试连接a float和a string.

更好的方法是执行字符串插值:

"#{city_details['longitude']}, #{city_details['latitude']}"
Run Code Online (Sandbox Code Playgroud)

其他可能的方案:

  • 你可以通过调用这样的to_s方法将每个float转换为字符串:

    city_details['longitude'].to_s + "," + city_details['latitude'].to_s

  • 或者你可以使用这个join方法:

    [city_details['longitude'], city_details['latitude']].join(",")