代码之家  ›  专栏  ›  技术社区  ›  Shane

检查clojure中某物的类别?

  •  23
  • Shane  · 技术社区  · 15 年前

    我正在学习clojure,有一个非常基本的问题:既然clojure有类型推断,你怎么知道推断出了什么类?

    例如,这些都会导致不同的数据类型:

    (2)
    (/ 2 3)
    (/ 2.0 3)
    

    有没有什么 class 返回数据类型的函数?还有,有没有一种正常的方式将某个东西铸造成特定的类型?在上面的第二个例子中,如果我希望结果是float,我会怎么做?

    2 回复  |  直到 13 年前
        1
  •  32
  •   charleslparker Rupa Dosapati    12 年前

    有一个 type 功能 clojure.core 图书馆。

    user> (type 2)
    java.lang.Integer
    
    user> (type (/ 2 3))
    clojure.lang.Ratio
    
    user> (type (/ 2.0 3))
    java.lang.Double
    

    如果要将给定的数字转换为浮点,请使用 float

    user> (float 10)
    10.0
    
        2
  •  2
  •   danday74    7 年前

    类似地,您可能不需要强制转换,因为以下操作有效:

    user> (Double/toString (/ 2 3))
    "0.6666666666666667"
    

    然而,这也是:

    user> (str (/ 2 3))
    "0.6666666666666667"