问题标签 [ceylon]
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.
unit-testing - 创建一个 ceylon.test.TestRunner
我正在尝试创建一个可以以编程方式运行的测试套件。(文档确实提到可以让 IDE 进行测试运行,但在我看来,将测试套件设置为具有自己的可运行单元的标准 Ceylon 模块似乎是一种更常规的方法。此外,文档没有没有说明如何以 IDE 方式实际执行此操作)。
所以,我正在使用createTestRunner函数创建一个TestRunner 。所述函数将TestSource s (' ') 的 Sequential 作为其第一个参数。是这种类型的别名:TestSource[]
TestSource
这提示了一个问题:我想如何将我的测试提供给测试运行器?
对于初学者来说,似乎最容易将它们放在本地函数中,然后让测试运行程序以某种方式访问这些函数(未进一步指定)。由于别名中包含的一长串类型TestSource
似乎不包括实际的Functions,因此我尝试寻找最近的候选对象:FunctionDeclaration。
为了做出这样的函数声明,我首先不得不考虑我的测试包装函数实际上可能是什么样子。也许是这样的?
(顺便说一下,这些函数在类型上是等效的)
经过大量Ceylon Herd 审查后,我认为FunctionDeclaration
此类函数的 a 可以这样拼写:
所以现在,我所要做的就是将它提供给createTestRunner
函数。我只需要放入myFunctionDeclaration
一个TestSource[]
:
但是第一行不起作用。myFunctionDeclaration
'FunctionDeclaration' 类型的类型根本不会作为TestSource
类型传递。为什么不?不是FunctionDeclaration
正确的 TestSource 类型吗?查看 的别名定义TestSource
,FunctionDeclaration
似乎就在可能的类型列表中:
我在这里想念什么?
ceylon - TestRunner.run() 不运行测试?
我创建了一个“Hello World”类型的测试套件,但我似乎无法让它运行任何测试。执行时,它只是说:
达到运行功能
进程以退出代码 0 结束
因此,我可以说我的两个包含测试的函数永远不会执行,因为它们包含永远不会打印的打印语句。
这是我的 tests/run.ceylon 文件的源代码:
ceylon - ceylon.test.TestRunner 在测试失败时失败
每当测试函数(用 注释的函数test
)包含失败的断言时,断言与抛出异常时的效果相同:不会执行该函数中的其他代码行。因此,用“test”注释的函数中的断言语句与普通 Ceylon 函数中的普通断言语句一样工作。这与文档相反,该文档指出普通的断言语句可用于进行单元测试。
因此,运行下面的代码,我可以看到语句myTests1
,但看不到“myTests2”:
这是实际输出:
functional-programming - Ceylon 中递归类型函数的类型
有没有办法在 Ceylon 中实现某种递归类型的函数?例如,我可以在 Ceylon 中以类型安全的方式定义组合逻辑,如下所示:
此代码按预期工作。但是,为了清晰、简洁和适用于其他问题,我希望能够仅使用函数来实现此行为。采取类似以下(非工作)示例:
在函数别名版本中,Fi 类型表示其操作数和返回值可以无限组合的函数。请注意,由于它们的递归性质,类型 Fi、Fi(Fi) 和 Fi(Fi)(Fi) 可以被认为在功能上是等效的;他们中的任何一个的消费者所知道的是,如果他们有一个函数,如果在一个 Fi 上调用,就会给他们另一个 Fi。
以下是我对 Ceylon 目前支持的内容的理解:
- 由于在编译期间被擦除,因此不支持递归别名。
- 我不知道当前有任何 Ceylon 功能可用于递归地专门化 Callable 类型或以其他方式获得所需的无限链接。
- 一个可能相关的问题得到了否定的答复。然而,那是两年半前的事了,在 Ceylon 1.2 和 Gavin King 写的关于新类型函数支持的博客中实现了一些可能相关的特性(如类型函数)之前。
- 高阶泛型有一个github 问题。
- 关于允许 Callable 的自定义实现还有另一个github 问题。
可以在当前版本的 Ceylon 中实现所需的行为吗?或者它肯定需要上述积压功能中的一项或两项?
reflection - 锡兰元模型
我正在研究锡兰并对它的元模型有疑问。我想创建一些创建一些基类'DataContainer',它允许使用内置的equals-hash实现实例化不可变类:例如Identifier(125,“ab”)== Identifier(125,“ab”)所以基类应该收集所有共享的非变量值,并在“哈希”和“等于”方法中使用此信息。我写了这段代码:
Identifier 类是 DataContainer 的客户端。我整体上喜欢这个解决方案,但我必须将“类”传递给超类构造函数,因为如果我在 DataContainer 中使用“类”,它就看不到任何子类的成员。如何在基类方法中获取扩展类成员的实际列表?像'this'这样的东西不起作用......
ceylon - How to test if collection contains all elements of other collection
With a Set
in Ceylon it is straightforward to determine if one collection is a superset of the other. It's just first.superset(second)
. What's the best way to do the equivalent for an Iterable
, List
, or Sequential
using multiset (or bag) semantics? For example something like the pseudocode below:
arrays - Ceylon 中的多维数组
我想用多维数组在锡兰工作。这是在锡兰计划的吗?如果是这样,我该如何申报?
我想在 Ceylon 中使用这个构造,如下面的 Java 所示:
properties - Ceylon 中的属性(getter 和 setter)
如何在锡兰定义房产?我知道我可以编写getName
函数setName
来获取和设置支持变量:
但我希望能够提供对属性的类似属性的访问:
我如何在锡兰做到这一点?
ceylon - 数学模块在哪里?
锡兰之旅中提到的第一个进口是
modules.ceylon
为了能够导入此math
模块,我需要放入什么?它不是以下任何一个:
string - 将字符串转换为 UTF-8 字节
如何将 Ceylon 中的字符串编码为 UTF-8 字节?