小编PM *_*tra的帖子

Swift 3:如何根据相同的名称在枚举之间进行映射?

enum PtzButton: Int {
    case play = 1
    case up = 2
    case stop = 3
    case left = 4
    case none = 5
    case right = 6
    case zoomIn = 7
    case down = 8
    case zoomOut = 9

    internal static let ptzActionMap: [PtzButton: PtzAction] = [
        .up: .up,
        .down: .down,
        .left: .left,
        .right: .right,
        .zoomIn: .zoomIn,
        .zoomOut: .zoomOut
    ]

    var ptzAction: PtzAction? {
        return PtzButton.ptzActionMap[self]
    }
}
Run Code Online (Sandbox Code Playgroud)

PtzAction是一个模型枚举。这PtzButton是一个视图绑定枚举。它们非常相似,但PtzButton不仅仅是案例。它必须知道,它们有不同的 rawValue 定义,我不应该改变它们。

所以,我的问题是:有没有更好的方法来简化ptzActionMap …

swift

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

将List <int>拆分为连续数字组

我有一个排序,List<int>好像{ 1, 2, 3, 4, 6, 7, 9 }
我想把它分成一些组 - 每个组都有这样的连续数字:{ {1, 2, 3, 4}, {6, 7}, {9} }

我知道我可以使用for循环来遍历列表,并在当前值和先前值之间进行比较,然后决定是追加到最后一个组还是创建一个新组.但我想找到一种"漂亮"的方式来做到这一点.也许使用LINQ?

编辑:

我从项目more-itertools中找到了一个python代码:

def consecutive_groups(iterable, ordering=lambda x: x):
    for k, g in groupby(
        enumerate(iterable), key=lambda x: x[0] - ordering(x[1])
    ):
        yield map(itemgetter(1), g)
Run Code Online (Sandbox Code Playgroud)

c# linq

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

C#委托与params

我有一个调用其他工具的验证方法:

public ValidationResult Validate(Some arg) {
    var errors = new List<ValidationError>();

    validate1(arg, errors);
    if (errors.Count > 0) {
        return ValidationResult.Failed(errors);
    }

    validate2(arg, other, errors);
    if (errors.Count > 0) {
        return ValidationResult.Failed(errors);
    }

    validate3(arg, other2, errors);
    if (errors.Count > 0) {
        return ValidationResult.Failed(errors);
    }

    return ValidationResult.Succeess();
}
Run Code Online (Sandbox Code Playgroud)

我想要一些方法来制作如下代码,使用for循环来调用每个验证器:

public ValidationResult Validate(Some arg) {
    var errors = new List<ValidationError>();

    var validators = new [] {
        validate1(arg, errors),
        validate2(arg, other, errors),
        validate3(arg, other2, errors)
    };

    foreach (var validator in validators) {
        validator.invoke();
        if …
Run Code Online (Sandbox Code Playgroud)

c# delegates action

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

标签 统计

c# ×2

action ×1

delegates ×1

linq ×1

swift ×1