标签: typing

如何在F#中使用其他方法创建接口

我正在尝试创建一个在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'的实现

但这种类型的观点是该成员是抽象的.我究竟做错了什么?

.net f# interface typing

1
推荐指数
1
解决办法
376
查看次数

如何在C#中创建自定义对象类型类?

我有一种情况,我有几个有共同点的东西和有些独特的东西.我想创建一个比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而不重铸它,那将是非常好的.

c# class typing

1
推荐指数
1
解决办法
2万
查看次数

如何创建一个屏幕键盘,显示当前正在键入的键?

我有一个在线打字程序,我想为他们创建一个屏幕键盘,就像他们在键入程序时如何做,如Keyblaze Typing Tutor.那么有没有办法创建一个JavaScript程序,它将显示当前正由用户键入的键(演示美学无关紧要)?

javascript typing

1
推荐指数
1
解决办法
3016
查看次数

列表范围的类型:如何使我的函数更少多态?

我有一个功能

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可以做到吗?

polymorphism haskell typing ghci

1
推荐指数
1
解决办法
93
查看次数

Emacs:记录输入命令所需的时间

我是Emacs的新手.我目前正在学习导航,编辑等基本命令.

一些关键组合需要更长的时间才能完成......他们通常需要更多的按键才能按下或更高程度的手指位置杂技:).我想知道是否有人知道是否有现有的Emacs插件:

  1. 识别用户何时开始输入命令(例如'C-'某事或'M-'某事)并记录该时刻的时间,然后
  2. 等到用户输入完命令后(即命令被识别的点,在命令实际执行之前)并记录该时间,然后
  3. 将一些简单的日志信息附加到可配置文件(例如,写入'命令描述','键','进入持续时间')以用于该特定事件.

为什么?也许它太过分了,但如果我能够分析这样的日志文件并确定哪些命令具有高使用频率以及较长的完成时间,那么它可能会节省我将来的时间.这些命令可以绑定到我的谦卑手指更容易到达的键,例如:).

我自己写这个可能是一个很好的学习练习,但如果解决方案已经存在,我可能更愿意节省时间.

keyboard emacs logging duration typing

1
推荐指数
1
解决办法
75
查看次数

Swift:NSMutableSet - > Type'CGPoint'不符合协议'AnyObject'

为什么这个代码结果为"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)

typing nsmutableset swift

1
推荐指数
1
解决办法
1518
查看次数

如何在C++中的main函数中使用模板数据类型?

#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)

我想使用模板数据类型声明结果变量的数据类型,以便我的添加程序是通用的,但编译器给我这个错误"结果未在此范围内声明".

c++ templates typing

1
推荐指数
1
解决办法
849
查看次数

如何从函数中返回Any?

我正在为数据库项目的类型系统工作.一个问题是映射类型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函数返回任何类型的类型.

typing rust

1
推荐指数
1
解决办法
457
查看次数

在Common Lisp中输入变量

我读到CL支持可选的输入(因为在语言中有这个功能)在很多情况下我会假设allos用于更快的代码,但我似乎找不到任何关于实际编写类型代码的东西.是否可以显式键入代码而不是使用黑客?(例如,#'vector生成一个simple-vector,有点让我想起|0JS强制转换为整数)

或者也许因为类型实际上是CLOS类(它们是,对吧?)你只需要#'make-instance一个类型的对象,比方说,'integer

types typing common-lisp typed

1
推荐指数
1
解决办法
1152
查看次数

Haskell中有这个lambda语句的有效定义吗?

我对Haskell中的函数有以下定义.

> q7 :: forall a. forall b. ((a -> b) -> a) -> a
Run Code Online (Sandbox Code Playgroud)

我要么为它创建一个定义,要么说明为什么定义不存在.这是我的想法:

q7接受任何类型的ab.该声明(a -> b) -> a将通过采取两个项目并返回后者来实施.现在,如果我再进一步,我可以返回同样的" a"来实现((a -> b) -> a) -> a.我看到在一个问题ab可以是任何类型,因此对于每个实例a,可能a是不同的类型?例如,它可能是这样的((Int -> Bool) -> [Char]) -> Int吗?我可能谋杀了那种语法.如果有人有任何提示,或者有人可以确认或否认我的想法,我将非常感激!

haskell typing lambda-calculus

1
推荐指数
1
解决办法
143
查看次数