小编Nic*_*ckL的帖子

async-await如何阻止?

我认为异步方法对IO工作有好处,因为它们在等待时不会阻塞线程,但这实际上是如何实现的呢?我假设必须要听一些东西来触发任务才能完成,这是否意味着阻塞只是移动到其他地方?

c# async-await

13
推荐指数
2
解决办法
6109
查看次数

Knockout禁用选择选项标题

使用knockout 2.3.0 optionsAfterRender引入绑定,以便可以非常灵活地更改选项.

我想禁用选项标题.目前我正在做

<select data-bind="options: items, optionsCaption:'please select', optionsAfterRender: function(option, item) { ko.applyBindingsToNode(option, {disable: !item}, item); }"></select>
Run Code Online (Sandbox Code Playgroud)

哪个有效,但我必须在optionsAfterRender任何地方复制并粘贴该功能.我一直在尝试创建一个自定义bindingHandler来在一个地方完成它,但我遇到了困难.到目前为止,这是我的bindingHandler:

ko.bindingHandlers.disableOptionsCaption = {
    init: function (element) {

        ko.applyBindingsToNode(element, {
            optionsAfterRender: function (option, item) {

                ko.applyBindingsToNode(option, {
                    disable: !item
                }, item);

            }
        });

    }
};
Run Code Online (Sandbox Code Playgroud)

我还在这里创建了一个小提琴,显示了工作版本和非工作版本.任何帮助,将不胜感激!

javascript html-select knockout.js

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

英国银行排序代码javascript正则表达式

我正在尝试在javascript中为英国银行排序代码创建正则表达式,以便用户可以输入6位数字或6位数字,并在对之间使用连字符.例如"123456"或"12-34-56".也不是所有的数字都可以是0.到目前为止,我已经有了/(?!0{2}(-?0{2}){2})(\d{2}(-\d{2}){2})|(\d{6})/这个jsFiddle来测试.

这是我的第一个正则表达式,所以我不确定我做得对.对6个0位数的测试应该会失败,我认为-?前瞻中的可选连字符会使它与带有连字符的6个0位数相同,但事实并非如此.如果我做错了,我会感激一些帮助和任何批评!

javascript regex bank

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

Json.net getter属性未序列化

我已经开始使用json.net来生成更好的DateTimes,但我注意到我的一个属性没有被序列化.它没有setter,它的getter依赖于对象的另一个成员,例如

public int AmountInPence { get; set;}
public decimal AmountInPounds { get { return (decimal)AmountInPence / 100;  } }
Run Code Online (Sandbox Code Playgroud)

我创建了一个继承自的类,JsonResult主线是:

string serializedObject = JsonConvert.SerializeObject(Data, new IsoDateTimeConverter());
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何强制它序列化该属性?

编辑:只是为了澄清 - 这是一个简化的例子.我已经更新它以反映我首先将int转换为十进制.我忘了先检查,但属性是部分类的一部分,因为它是从WCF服务返回的.我在集合中宣布这个属性,这可能是一个线索吗?

c# asp.net-mvc serialization json json.net

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

这个惯用的F#是一个相当快速的无限递归序列吗?

在解决第12个项目的欧拉问题时,我开始着手制作无限序列以获得连续的三角形数字.我的第一次尝试是:

let slowTriangularNumbers =

  let rec triangularNumbersFrom n = 
    seq { 
      yield seq { 0 .. n } |> Seq.sum
      yield! triangularNumbersFrom (n + 1) 
    }

   triangularNumbersFrom 1
Run Code Online (Sandbox Code Playgroud)

事实证明这是非常缓慢的 - 每次获得下一个项目时,它必须计算导致的所有增加n.

我的下一次尝试是:

let fasterTriangularNumbers =

  let cache = System.Collections.Generic.Dictionary<int, int>()
  cache.[0] <- 0         

  let rec triangularNumbersFrom n = 
  seq { 
    cache.[n] <- cache.[n - 1] + n                   
    yield cache.[n]
    yield! triangularNumbersFrom (n + 1) 
  }

  triangularNumbersFrom 1
Run Code Online (Sandbox Code Playgroud)

引入可变字典已经大大加快了它的速度,但是有一个可变集合这是正常的,还是我可以用另一种方式表示状态?

f# immutability seq

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

模型验证的自定义范围属性不会生成 jQuery 验证属性

在我的项目中,我有一些实例,其中用户需要提供小数形式的金额(以英镑和便士为单位),并且它必须在 Int32 范围内,以便可以为数据库进行转换。我认为可以这样做:

/// <summary>
/// Range attribute to ensure that entered value can be converted to an int32
/// </summary>
public class PoundsAndPenceAttribute : RangeAttribute
{
    public PoundsAndPenceAttribute(double minimum = (double)int.MinValue / 100, double maximum = (double)int.MaxValue / 100)
        : base(minimum, maximum)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不会生成客户端 JavaScript data-val range 属性,尽管它确实在服务器端对其进行了验证。有没有更好的方法来做到这一点,或者我必须编写一个自定义验证器?

jquery-validate asp.net-mvc-3

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

F#树构建函数导致Xamarin Studio中的堆栈溢出

我试图在树结构中建立一些规则,用逻辑门即,,或者还有条件,例如财产X等于值ÿ.我首先编写了最明显的递归函数,它起作用了.然后,我尝试编写一个不会导致继续传递样式的堆栈溢出的版本,从这篇帖子中获取关于泛型树折叠stackoverflow上的这个答案的提示.

它适用于小树(深度约为1000),但不幸的是,当使用Xamarin Studio在我的Mac上运行它时,使用大树会导致堆栈溢出.谁能告诉我,我是否误解了F#如何处理尾递归代码或者这个代码是否不是尾递归的?

完整的样本在这里.

let FoldTree andF orF notF leafV t data = 
    let rec Loop t cont = 
        match t with
        | AndGate (left, right)->
            Loop left  (fun lacc ->  
            Loop right (fun racc -> 
            cont (andF lacc racc))) 
        | OrGate (left, right)->
            Loop left  (fun lacc ->  
            Loop right (fun racc -> 
            cont (orF lacc racc))) 
        | NotGate exp ->
            Loop exp (fun …
Run Code Online (Sandbox Code Playgroud)

stack-overflow recursion f# functional-programming xamarin

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

F#模式直接匹配let绑定

在F#中是否可以直接对let绑定进行模式匹配?

例如,这编译时没有任何警告:

    let value = 
        match arg with
        | 1 -> "value1"
        | 2 -> "value2"
        | _ -> failwith "key not found"
Run Code Online (Sandbox Code Playgroud)

以下内容提供警告"此规则将永远不会匹配"与匹配的行key2_:

    let key1 = 1
    let key2 = 2
    let value = 
        match arg with
        | key1 -> "value1"
        | key2 -> "value2"
        | _ -> failwith "key not found"
Run Code Online (Sandbox Code Playgroud)

这是因为虽然它们是不可变的,但是let绑定与C#const变量不同吗?

f# immutability pattern-matching guard-clause

3
推荐指数
2
解决办法
608
查看次数

为什么.NET LINQ方法在F#核心库中重写?

我在github上看到F#核心库有一组重写的LINQ方法.这是什么原因?为什么它们与C#方法不同?

编辑

我不确定与此有什么意见,但也许是为什么它们重复以及为什么它们略有不同的问题应该分开.一个例子是使用以下take方法:在C#中,调用4个元素序列中的5个元素将返回该4个元素的序列,而在F#中,它将引发异常.

c# linq f#

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