问题标签 [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.

0 投票
1 回答
83 浏览

ceylon - 在 Ceylon 中编写 if 语句

我的任务是在 Ceylon 编写文件编写器,在此过程中,我遇到了在 Ceylon 编写 if 语句的巨大困难,当面对强大的类型正确向导时,我将被允许通过。遥远的锡兰大地狭窄的编译桥:

我得到的错误是“错误:(10、1)锡兰:语法不正确:'if'处缺少EOF”

这是我的 if 语句(第一行是第 10 行):

编辑:这是我根据 Bastien Jansens 建议更新的 if 语句。但是,错误保持不变:(

这是我的应用程序的完整源代码:

0 投票
1 回答
69 浏览

guava - Ceylon 模块系统:Guava 类不匹配,即使依赖关系树中只有一个 Guava

我通过子类化一个将 Google Guava 作为构造函数参数的类来为 JSimpleDB(一个持久性库)定义一个适配器Converter

JSimpleDB 默认不导出 Guava,所以我添加了以下内容overrides.xml以确保正确的类对我的应用程序可见(我没有使用--auto-export-maven-depenciesor --flat-classpath):

这导致以下模块层次结构(我的代码在 中fun.uschool.user.impl):

模块层次结构

正确的com.google.guava:guava模块应该暴露给我的程序,确实我可以 import Converter,但是当我尝试编译上面的代码时,我得到以下错误:

所以显然不知何故com.google.guava:guava导入了错误,即使模块依赖关系树中只有 1 个可见。如何导入正确的?

这是ceylon info's 依赖分析的输出:

0 投票
1 回答
35 浏览

ceylon - 是否有通配符可用于 Ceylon 中的 switch 表达式/语句?

标题是我的问题。具体来说,通配符在匹配元组中的值时很重要。

在 OCaml 中,可以:

允许匹配没有通配符的元组值的“开关”结构是没有用的。在锡兰,我认为开关坏了;-)。

0 投票
1 回答
60 浏览

interface - 实现内部非静态接口

我想从包装类外部实例化一个内部非静态接口。

这可能吗?

考虑以下代码:

我认为object impl satisfies o.AInterface{}这是我合理的直觉,但编译器不允许这样做。

0 投票
2 回答
49 浏览

proxy - 锡兰的 RMI/Proxy 以及与非默认方法的关系

我想在锡兰/为锡兰编写一个 RMI 库(因为到目前为止我还没有找到)。

我需要的第一件事是代理。在Java中,我使用了类似的东西

1.锡兰有类似的东西吗?(还没有找到东西)


尝试自己编写类似的东西时,我遇到了这个使用字节码操作的 JVM 解决方案。漂亮,正是我想要的。

请注意,这甚至可以为一个类生成一个代理,而不仅仅是 Java 中的接口。在锡兰这应该是合法的,因为没有字段,我们可以用方法调用模拟整个类。

2.如果为类创建代理是不行的,请告诉我。另外,关于代理的锡兰直觉/未来是什么?应该有(没有)代理吗?


在代理的未来,我们有一个主要问题:

在锡兰我们有default关键字,没有它,方法就不能被提炼/覆盖。这也会产生final用于编译的 Java 输出类的方法。因此(甚至不是)字节码操作可以覆盖那些并将它们重定向到调用处理程序/拦截器。

3.我们如何处理这个问题?


我假设根本没有?我完全明白不允许优化方法和default/final关键字的想法,但这会阻碍类的 RMI/代理。

4.类的代理是个坏主意吗?


是的,我目前正在考虑和调查的问题还有很多:JS 实现、接口和默认方法等

这些点似乎是目前最相关的,所以让我们从这里开始。

0 投票
2 回答
47 浏览

if-statement - 检查枚举类的类型

我有一个枚举抽象类:

还有一个尝试检查 aFoo是否不是 a的函数bar

我得到错误

0 投票
1 回答
57 浏览

ceylon - 实施 Summable 时遇到问题

我正在尝试实现类DistanceCMDistanceMM,并且我希望它们可以互换地求和,只要它们都继承自Distance.

但是,我收到此错误:

“错误:(46、76)锡兰:声明'Summable'的类型参数'Other'有参数'Distance',它不能分配给'Other'的上限'Summable'”

...我无法破译...错误消息指的是下面代码中的这一行:

这是当前代码:

0 投票
1 回答
30 浏览

ceylon - 顶级函数名称受限?

通常 Ceylon 喜欢文件名与在该文件中声明的(唯一)类的名称相对应。

当我尝试使用顶级函数遵循相同的模式时,IDE 对我咆哮。例子:

文件结构:

  • 实用程序/
    • 文件/
      • 包.json
      • stringFromFile.ceylon
    • 模块.ceylon
    • 包.ceylon

文件 stringFromFile.ceylon 的内容:

IDE 生成的错误消息是:“重复声明。名称 stringFromFile 在此范围内不是唯一的”。当光标悬停在“stringFromFile”的函数名称声明上时,会出现此消息。

stringFromFile 的这个声明是代码库中唯一的声明(通过全局搜索显示)。唯一的“重叠”名称是包含文件的名称。为什么这两个名称不允许重叠?

0 投票
3 回答
56 浏览

ceylon - Initialising Sequential values with for loop?

Is there any way to initialize a Sequential value not in one fellow swoop?

Like, can I declare it, then use a for loop to populate it, step by step?

As this could all happen inside a class body, the true immutability of the Sequential value could then kick in once the class instance construction phase has been completed.

Example:

This code doesn't work, as I get this error:

Error:(12, 9) ceylon: illegal receiving type for index expression: 'Sequential' is not a subtype of 'KeyedCorrespondenceMutator' or 'IndexedCorrespondenceMutator'

So what I can conclude is that sequences must be assigned in one statement, right?

0 投票
2 回答
64 浏览

ceylon - 递增整数

我在增加变量整数时遇到了一些麻烦。这段代码:

给出这个输出:

而预期的输出是:

那是怎么回事?