据说,当我们有一个班级Point并知道如何执行point * 3如下操作:
class Point
def initialize(x,y)
@x, @y = x, y
end
def *(c)
Point.new(@x * c, @y * c)
end
end
point = Point.new(1,2)
p point
p point * 3
Run Code Online (Sandbox Code Playgroud)
输出:
#<Point:0x336094 @x=1, @y=2>
#<Point:0x335fa4 @x=3, @y=6>
Run Code Online (Sandbox Code Playgroud)
但是之后,
3 * point
Run Code Online (Sandbox Code Playgroud)
不明白:
Point不能强迫进入Fixnum(TypeError)
所以我们需要进一步定义一个实例方法coerce:
class Point
def coerce(something)
[self, something]
end
end
p 3 * point
Run Code Online (Sandbox Code Playgroud)
输出:
#<Point:0x3c45a88 @x=3, @y=6>
Run Code Online (Sandbox Code Playgroud)
所以据说3 * point是一样的3.*(point).也就是说,instance方法 …
我正在使用reshape包操作数据框.当使用融合函数时,它会对我的值列进行分解,这是一个问题,因为这些值的子集是我希望能够对其执行操作的整数.
有没有人知道将一个因子强制转换为整数的方法?使用as.character()将它转换为正确的字符,但是我不能立即对它执行操作,as.integer()或者as.numeric()将其转换为系统存储该因子的数字,这是没有用的.
谢谢!
杰夫
比方说,我有一个LazySeq的java.lang.Character中的像
(\b \ \! \/ \b \ \% \1 \9 \/ \. \i \% \$ \i \space \^@)
Run Code Online (Sandbox Code Playgroud)
如何将其转换为String?我已经尝试过显而易见的事了
(String. my-char-seq)
Run Code Online (Sandbox Code Playgroud)
但它会抛出
java.lang.IllegalArgumentException: No matching ctor found for class java.lang.String (NO_SOURCE_FILE:0)
[Thrown class clojure.lang.Compiler$CompilerException]
Run Code Online (Sandbox Code Playgroud)
我认为因为String构造函数需要原始char []而不是LazySeq.那么我尝试了类似的东西
(String. (into-array my-char-seq))
Run Code Online (Sandbox Code Playgroud)
但它抛出同样的异常.现在的问题是into-array返回java.lang.Character []而不是原始char [].这很令人沮丧,因为我实际上是这样生成我的角色序列
(map #(char (Integer. %)) seq-of-ascii-ints)
Run Code Online (Sandbox Code Playgroud)
基本上我有一个表示ASCII字符的seq的整数; 65 = A等.您可以看到我明确使用原始类型强制函数(char x).
这意味着我的map函数返回一个原始char,但Clojure map函数整体返回java.lang.Character对象.
我需要将多行两列data.frame转换为命名字符向量.我data.frame会是这样的:
dd = data.frame(crit = c("a","b","c","d"),
name = c("Alpha", "Beta", "Caesar", "Doris")
)
Run Code Online (Sandbox Code Playgroud)
我真正需要的是:
whatiwant = c("a" = "Alpha",
"b" = "Beta",
"c" = "Caesar",
"d" = "Doris")
Run Code Online (Sandbox Code Playgroud) 最近我在接受采访时被问到这个问题.
var a = 1;
var b = [1];
Run Code Online (Sandbox Code Playgroud)
什么会a == b;回来.
当我在我的Chrome浏览器控制台上检查时,我得到了这个.
var a = 1;
var b = [1];
a == b;
true
Run Code Online (Sandbox Code Playgroud)
我也检查过了
var a = 1;
var b =(1);
a == b;
true
Run Code Online (Sandbox Code Playgroud)
我知道b在大小为1的数组中.这是否意味着数组的大小被分配给b.我真的很困惑.任何人都可以解释我的逻辑吗?
请考虑安全bool习语的以下摘录:
typedef void (Testable::*bool_type)() const;
operator bool_type() const;
Run Code Online (Sandbox Code Playgroud)
是否可以在没有typedef的情况下声明转换函数?以下内容无法编译:
operator (void (Testable::*)() const)() const;
Run Code Online (Sandbox Code Playgroud) 在Python文档和邮件列表中,我看到值有时是"强制转换",有时是"强制".有什么不同?
在Dart中,有一种方便的方法将String转换为int:
int i = int.parse('123');
Run Code Online (Sandbox Code Playgroud)
有什么类似的转换bools?
bool b = bool.parse('true');
Run Code Online (Sandbox Code Playgroud) 为什么都是&[u8]和&[u8; 3]确定在这个例子吗?
fn main() {
let x: &[u8] = &[1u8, 2, 3];
println!("{:?}", x);
let y: &[u8; 3] = &[1u8, 2, 3];
println!("{:?}", y);
}
Run Code Online (Sandbox Code Playgroud)
&[T; n]可以胁迫的事实&[T]是使它们可以容忍的方面. - 克里斯摩根
为什么可以&[T; n]胁迫&[T]?在其他条件下,这种强制发生了吗?
在Scala 2.10中,显然我们正在改进反思.
这将如何影响lift-json,jerkson,sjson和朋友?此外,我们能否在不久的将来期望内置的JSON语言功能和Scala中的Groovy优秀GSON?
我问的原因是我非常喜欢这样做:
case class Foo(a: String, b: Int, bar: Bar)
case class Bar(c: Int)
val foo = Foo("hey", 10, Bar(23))
val json = foo.toJson
Run Code Online (Sandbox Code Playgroud)
没有环跳(即样板准备工作),即使是任意复杂的对象图.也许我问得太多了,但总能做到梦想.请打破我的2.10梦想,或者通过备受期待的Scala版本打开新的途径.
此外,关于案例类,似乎验证/创建,scalaz验证是首选的武器.它看起来非常精彩,可以作为对象创建的安全代理或作为错误收集器.然而,作为一个Scewbie,我发现scalaz有点挑战性,并且尽管它有明显的力量,我仍然抵抗F-ing黑暗面;-)
无论如何,这里的重点是,2.10反射我们应该能够在运行时绑定从表单帖子到案例类的属性的字段,并仅基于属性类型执行基本验证(即不会指定单独的验证逻辑,指定属性foo必须是一个String,因为它的类型已在case类中定义,我们现在可以正确地反映它
那么,勇敢的新世界到来,还是现有的工具是可预见的未来的支柱?