我可以通过以下方式将字符串转换为浮动:
Float("1")
现在我有了这个:
f = Float
如何使用f
将字符串转换为浮动?
被修改
我很抱歉不清楚。
以下是我的情景:
我正在使用Redis DB,通过gem redis-rb。基本上redis-db
将值存储为字符串。当我将数据库中的值映射到我的对象时,我希望将它们转换为一些原始类型以便于使用。
所以我用这个:
require 'ostruct'
class Person < OpenStruct
MAP = { :name => String, :age => Fixnum }
##
# This reads data from DB, and converts them to some "primitive" types
# for easy use.
#
def read
MAP.each_pair do |sym, cls|
# read data as string from DB, via key `sym.to_s`
s = ...
# now I have `cls`, how can I "cast" `s` to `cls`?
self[sym] = ???
# I know I can "iterate" all types by this:
#
# if cls.is_a? Float
# self[sym] = s.to_f
# elsif cls.is_a? Fixnum
# self[sym] = s.to_i
# ...
#
# But in Python I can just cast `s` to `cls` in one line...
# So I wonder if there is some way to cast `s` to `cls` in Ruby?
end
end # read
end # Person
说“易于使用”,我的意思是我想:
p = Person.new
p.read
# I want to access `age` as an integer, not a string
if p.age +-*/ ...
答案 0 :(得分:2)
您无法使用f
来执行此操作。 Float
中的Float("1")
是一种方法。 Float
中的f = Float
是一个类(对象)。它们是不同的东西。
答案 1 :(得分:0)
我从你的问题中理解你想要的东西:
result = '1'.to_f #outputs => 1.0
然后是字符串:
result.to_s #outputs => "1.0"
你也可以一步到位:
'1'.to_f.to_s #outputs => "1.0"
有关字符串和红宝石的更多信息,请参阅ruby doc