问题标签 [beef]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
extension-methods - 如何使用扩展将接口一致性添加到我无法控制的类型?
在牛肉文档的扩展页面上,它说:
扩展可用于将接口一致性添加到您无法控制的类型(即:系统类型或在另一个库中定义的类型)。
不幸的是,它没有提供该用例的示例,我不知道如何继续。
假设我有一个界面IFooBarable
:
我想将此扩展方法添加到系统库类型中System.DateTime
:
...这样 DateTime 可以实现IFooBarable
。
是否应该有一种方法可以告诉编译器将DateTime
其视为 的实现IFooBarable
?例如,这样编译:
scope - 如何防止在循环中创建的对象在循环迭代结束时被释放
如果我正在创建一个对象并且我希望它只持续到当前代码块,之后它将被自动销毁(或至少标记为销毁),我可以使用scope
关键字:
但是,如果我需要将对象保留到块之后,例如对于整个方法或对于它创建的块之外的块,我该如何指定该范围?例如,如何确保字符串存在于下面的第二个循环中?
list - 如何随机播放列表?
我如何List
在牛肉中洗牌?我想添加一个扩展来就地Random
洗牌:List
lambda - 定义 lambda 时 [&] 是什么意思?
在方法参考文档中,有一些示例代码,复制如下:
在 lambda 定义的三个示例中的两个示例中,[&]
分配表达式 ( scope
) 和 lambda 的参数之间有一个。那是什么[&]
?
对于其他示例,以下是IDE 源代码中包含的测试的一些摘录:
这是源代码的 IDEHelper 部分的另一组示例/测试,其中每个 lambda 定义都有[&]
:
最后,[&]
严格来说可能不是 lambda 的东西。我可以将它放在其他定义中let s = new [&] String();
,例如它可以毫无问题地编译,并且据我所知,运行结果与没有它时的结果相同。但是,我还没有看到它出现在示例/测试代码的其他任何地方。
unit-testing - 如何编写应该失败的单元测试?
如果我做了一个应该抛出致命错误的测试,我该如何处理?例如,如何编写此测试以确保正确删除变量:
list - 如何在给定排序方法或 lambda 的情况下对列表进行排序?
如果我有一个方法或 lambda 来对List<T>
例如使用 spaceship 运算符进行排序(来自文档:x <=> y
-如果 x < y,结果为负,如果 x == y,则结果为零,如果 x > y,则为正),我如何使用那个方法?
有一个Sort(Comparison<T>)
方法,List<T>
但文档没有解释如何使用它。
例如,假设我想按字符串的长度对字符串列表进行排序,首先是升序,然后是使用方法和 lambda 的降序:
sorting - 如何按值对字典键进行排序?
如果我有一个Dictionary
和一个 lambda 可以用来对值进行排序,我如何获得按字典中相应值排序的键的列表或数组?
例如,如果我想Dictionary<String,int>
按值降序对 a 进行排序怎么办:
memory - 避免创建临时对象的内存泄漏
在牛肉中,我可以使用以下代码:
这很好用,因为我可以轻松地删除a+b
操作所做的堆分配。但是,如果我有:
我必须一次添加一个并一次删除每个结果。
有没有更好的方法来处理这些临时变量的破坏?
programming-languages - 用牛肉语言创建窗口
所以最近我一直在学习编译器和 llvm 以及所有这些东西。但真正困扰我的是牛肉。Beef 是一种很酷的编程语言,我刚刚学到了它,但它就像 C# Pro。但我不明白的一部分是窗口创建。牛肉使用我得到的 SDL。(我不知道它是如何链接的)您可以(在 MacOS 上)创建一个 NSWindow 和 tada。但这仅在 Objective-c(++) 中受支持。那么牛肉到底是怎么做到的呢?