我正在尝试创建一个在IEvent之上需要其他方法的接口,如下所示:
type Varying<'t> =
abstract member Get : unit -> 't
abstract member Set : 't -> unit
abstract member AddHandler : Handler<'t> -> unit
abstract member RemoveHandler : Handler<'t> -> unit
member v.Add(f) = v.AddHandler(new Handler<_>(fun _ x -> f x))
interface IEvent<'t> with
member c.AddHandler(h) = c.AddHandler(h)
member c.RemoveHandler(h) = c.RemoveHandler(h)
member c.Add(f) = c.Add(f)
Run Code Online (Sandbox Code Playgroud)
我添加了Get&Set方法.问题是F#编译器要我实现抽象成员:
没有给出'抽象成员Varying.AddHandler:Handler <'t> - > unit'的实现
但这种类型的观点是该成员是抽象的.我究竟做错了什么?
我有一种情况,我有几个有共同点的东西和有些独特的东西.我想创建一个比object []更强类型的类,但可以保存任何其他类.
如果我有例如:
class MyType1
{
string common1;
string common2;
string type1unique1;
string type1unique2;
//Constructors Here
}
class MyType2
{
string common1;
string common2;
string type2unique1;
string type2unique2;
//Constructors Here
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个类如下的类:
class MyObject
{
string common1;
string common2;
//Code Here
}
Run Code Online (Sandbox Code Playgroud)
所以我创建了类似的东西:
Dictionary<int, MyObject>
Run Code Online (Sandbox Code Playgroud)
这将包含MyType1或MyType2,但不包含字符串或int或字典将保存的任何其他内容.存储在那里的MyObjects需要能够稍后重铸到MyType1或MyType2以访问下面的唯一属性.
如果我可以访问MyObject.common1或MyObject.common2而不重铸它,那将是非常好的.
我有一个在线打字程序,我想为他们创建一个屏幕键盘,就像他们在键入程序时如何做,如Keyblaze Typing Tutor.那么有没有办法创建一个JavaScript程序,它将显示当前正由用户键入的键(演示美学无关紧要)?
我有一个功能
sasiad (x,y) = [ (x+dx,y+dy) | dy <- [-1..1], dx <- [-1..1], x+dx >= 0, y+dy >= 0]
Run Code Online (Sandbox Code Playgroud)
我不喜欢那种功能的类型.我希望它返回[(Int,Int)]而不是[(t,t1)]
强制ghci可以做到吗?
我是Emacs的新手.我目前正在学习导航,编辑等基本命令.
一些关键组合需要更长的时间才能完成......他们通常需要更多的按键才能按下或更高程度的手指位置杂技:).我想知道是否有人知道是否有现有的Emacs插件:
为什么?也许它太过分了,但如果我能够分析这样的日志文件并确定哪些命令具有高使用频率以及较长的完成时间,那么它可能会节省我将来的时间.这些命令可以绑定到我的谦卑手指更容易到达的键,例如:).
我自己写这个可能是一个很好的学习练习,但如果解决方案已经存在,我可能更愿意节省时间.
为什么这个代码结果为"Type'CGPoint'不符合协议'AnyObject'"?
let mutableSet = NSMutableSet()
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
touch = touches.anyObject() as UITouch!
mutableSet.addObject(touch.locationInNode(self))
}
Run Code Online (Sandbox Code Playgroud) #include <iostream>
using namespace std;
template <class U>
U add (U a, U b)
{
U c = 0 ;
c = a + b;
return c;
}
int main()
{
int first = 2;
int second = 2;
U result = 0;
result = add(first, second);
cout << result << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想使用模板数据类型声明结果变量的数据类型,以便我的添加程序是通用的,但编译器给我这个错误"结果未在此范围内声明".
我正在为数据库项目的类型系统工作.一个问题是映射类型id来给定的类型ID和地址的读取器,函数可以返回给定的从内置于任何数据类型u32,String以定义结构.
我对作家没有任何问题,比如这样的宏
fn set_val (data: &Any, id:i32, mem_ptr: usize) {
match id {
$(
$id => $io::write(*data.downcast_ref::<$t>().unwrap(), mem_ptr),
)*
_ => (),
}
}
Run Code Online (Sandbox Code Playgroud)
但是对于读者来说Any似乎不习惯被用作返回值因为the trait bound "std::any::Any + 'static: std::marker::Sized" is not satisfied.我也试图作为参考返回,但我被困在一生
fn get_val (id:i32, mem_ptr: usize) -> Option<& Any> {
match id {
$(
$id => Some(&$io::read(mem_ptr)),
)*
_ => None,
}
}
Run Code Online (Sandbox Code Playgroud)
抱怨missing lifetime specifier.如果'static由于返回值不够长,在这里不起作用,我该如何指定生命周期?
PS.$ io的read函数返回任何类型的类型.
我读到CL支持可选的输入(因为在语言中有这个功能)在很多情况下我会假设allos用于更快的代码,但我似乎找不到任何关于实际编写类型代码的东西.是否可以显式键入代码而不是使用黑客?(例如,#'vector生成一个simple-vector,有点让我想起|0JS强制转换为整数)
或者也许因为类型实际上是CLOS类(它们是,对吧?)你只需要#'make-instance一个类型的对象,比方说,'integer?
我对Haskell中的函数有以下定义.
> q7 :: forall a. forall b. ((a -> b) -> a) -> a
Run Code Online (Sandbox Code Playgroud)
我要么为它创建一个定义,要么说明为什么定义不存在.这是我的想法:
q7接受任何类型的a和b.该声明(a -> b) -> a将通过采取两个项目并返回后者来实施.现在,如果我再进一步,我可以返回同样的" a"来实现((a -> b) -> a) -> a.我看到在一个问题a和b可以是任何类型,因此对于每个实例a,可能a是不同的类型?例如,它可能是这样的((Int -> Bool) -> [Char]) -> Int吗?我可能谋杀了那种语法.如果有人有任何提示,或者有人可以确认或否认我的想法,我将非常感激!