问题标签 [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 投票
2 回答
73 浏览

copy - 锡兰复制工具

我正在使用 ceylon 版本 1.2.3 的 ceylon copy 命令下载依赖项:

为什么工具跳过下载它的结果?

该工具看起来 - 除其他外 - 用于:

...但它应该寻找:

从逻辑上讲,以下应该可以工作:

...但它告诉我:

...类似地:

... 与:

如何使复制工具正确构建 url 并将模块下载到我的本地存储库?

0 投票
2 回答
67 浏览

maven - 如何在锡兰模块描述符中应用“maven:”前缀

我的模块描述符如下所示:

我可以使用 ceylon 1.2.3 成功编译和加载它。

但是编译器警告说要在它前面加上'maven:'。

无论我尝试使用前缀的哪个位置(例如“maven:joda-time:joda-time”,...),它都不会被接受。

ceylon 是否会在未来支持使用来自 maven 中央存储库的依赖项,或者对于那些想要解决来自 maven Central 的依赖项的人来说,这是否预示着未来的艰难时期?

0 投票
1 回答
47 浏览

ceylon - 如何将从 ceylon.ast 获得的编译单元提供给 Ceylon 编译器?

项目中的以下示例ceylon/ceylon.ast显示了如何以编程方式构建一些 AST 并让 Ceylon 类型检查器 ( com.redhat.ceylon.compiler.typechecker.TypeChecker) 对其进行类型检查:

https://github.com/ceylon/ceylon.ast/blob/master/source/test/ceylon/ast/samples/turingMachine/powerOfTwo.ceylon

那么随后推荐使用类型化语法树调用以编译类型化语法树的方法 - 考虑到编译单元通常作为文件而不是类型化语法树(来自ceylon.ast项目)提供给类型检查器?

这个问题与这个问题有关:The Ceylon Typechecker: How to get the typed syntax tree?.

0 投票
2 回答
183 浏览

java - 使用锡兰 import-jar

如何使用 ceylon import-jar 命令将库从 maven Central 导入项目?

请显示完整的命令。

例如,将“ http://repo.maven.apache.org/maven2/ ”中的“joda-time-2.9.4.jar ”放入本地目录。

我想应该是:

但据我所知,该工具不起作用(锡兰版本 1.2.2 和 1.2.3)。

使用 Maven Central 是必不可少的。

这个问题与锡兰复制工具有关,因为这两种工具都给我一个谜语。

0 投票
1 回答
111 浏览

java - Java 的包装类和 Ceylon 基本类型之间的映射

当一个 ceylon 模块导入“java.base”“8”时,它看不到原始的 java.lang 类,但它得到了其他东西。

因此,当我想要从 java 字符串解析为 java 整数时,我必须将 java 字符串转换为 ceylon 字符串,然后将其解析为 java 整数。

模块.锡兰:

运行锡兰:

再次引用锡兰:互操作 / 陷阱!

Java 的包装类(如 java.lang.Integer 或 java.lang.Boolean 和 Ceylon 基本类型)之间没有映射,因此必须通过调用(例如,intValue() 或 booleanValue() 或通过显式实例化显式执行这些转换)包装类,就像你在 Java 中在 Java 原始类型和它的包装类之间转换时所做的那样。”

所以,虽然很复杂,但它仍然有效。但是,当我想要在不涉及 String 的 java 类型之间进行直接转换时,我该怎么办?

这会导致问题,因为在锡兰没有简单的 t.string 类比,例如没有“t.int”或“t.float”。

所以,java和ceylon之间有一个转换。但代价是高昂的:java 类型之间的直接转换(cast 或 parse)丢失了。

所以请展示如何实现java类型(原始和包装)之间的直接转换。我不是在谈论 ceylon.interop.java 中包含的数组和其他内容。

在 java.lang api 中很难找到,因为类型映射规则应用不完整:

一方面,“valueOf”需要一个锡兰输入,但另一方面它返回一个 java 值。为什么和原来的 java.lang 不一样,即只是 java 类型之间的转换?有直观的规则吗?

您能否提供一份完整的文档,说明从锡兰看到的原始 java.lang 和 java.lang 之间的差异?

如何获得从锡兰看到的 java.base 的完整文档(当不在 eclipse 中工作时),从反射生成一个...?

0 投票
1 回答
125 浏览

java - Ceylon 和 Java 之间的互操作性:如何共享来自“ceylon.language”的导入

我正在尝试将从 ceylon.interop.java { CeylonList } 派生的锡兰类置于包含此派生的锡兰模块之外的 java 单元(在锡兰术语中,这将被称为模块,但 java 还没有)锡兰级。

运行锡兰:

为了使导入的模块在 java 端可见,我将模块描述符中的导入模块注释为“共享”。

模块.锡兰:

但是编译器还是报错:

解决方案应该是重新导出 ceylon.language

但一方面 ceylon.language 根本不允许导入,因此不能对其进行注释,也不能重新导出。

另一方面,我找不到任何“...未重新导出的导入模块...”,因为所有导入的模块都被注释为共享。

旁白:然后从 run.ceylon 导入类 CL 并在 Use.java 中使用

使用.java:

现在的问题是(参考上面的错误消息),1. 什么超类型 'CL' 在这个模块之外是可见的并且来自一个没有重新导出的导入模块,以及 2. 如何重新导出它?

0 投票
1 回答
53 浏览

ceylon - 没有正确类型的最后一个元素的元组

是否可以以类型安全的方式从元组中删除最后一个元素以实现任意数量?
我想要这样的东西:

0 投票
2 回答
63 浏览

android - Ceylon 插件在 Android Studio 中失败

最近在infoq看到了它的文章:

https://www.infoq.com/news/2016/09/ceylon-13-android-support

我在 Android Studio 2.2 中安装了插件没有问题。但是当在 Android 视图中,右键单击应用程序 > 在此模块中配置 Ceylon

我知道了:

错误:类 com.android.build.gradle.internal.scope.VariantScopeImpl 没有实现请求的接口 com.android.build.gradle.internal.scope.BaseScope

0 投票
1 回答
111 浏览

metaprogramming - 类型安全的元编程?使用字符串查询 ceylon.language 的元信息?

type.getAttributes() 的返回值和 type.getAttribute() 的参数值之间似乎存在关于属性(合格与不合格)命名的不匹配:

如果 getAttributes 返回的属性名称是例如 "ceylon.language::String.reversed" 这不能用于压缩两个模型的属性:

此代码不会产生预期的结果,因为 getAttribute() 期望例如“reversed”作为参数字符串,而不是 getAttributes() 返回的“ceylon.language::String.reversed”。

一般来说,我不赞成这种将字符串用于此类任务的方法。但它似乎是通过使用字符串查询来直接检索单个属性的唯一方法。

我看到的唯一替代解决方案是将所有属性读入例如TreeSet,编写一个比较器来比较属性的模型表示而不是它们的字符串表示,因此让我们以正确的顺序检索所需的属性以压缩它们。或者类似:zip(...getAttributes<...>(...).sort(), ...getAttributes<...>(...).sort())?

有时这可能效率不高,因为有时不需要所有属性时它需要处理所有属性。

最好有一个标准api 以类似于集合 api 的方式公开元信息,用于递归地将比较函数应用于对象层次结构以匹配或测试不同类型的相等性(通过精确类型匹配、按子类型, 按价值, 统一性, ...)

它可能需要基于树的元信息集合、仅检索所需信息的选择功能和比较功能。最后,它将是一种用于锡兰元信息的 LINQ。

我想知道这样的 api 是否已经存在,或者是否已计划,或者是否留给用户进行自己的自定义实现?

我真正不明白的是字符串用于查询 ceylon.language 以获取元信息,其中类型安全是 ceylon 元编程的明确设计目标。

0 投票
1 回答
115 浏览

module - 从锡兰运行锡兰类型检查器,如 typechecker/src/main/Main.java

我正在从一个带有 run.ceylon 的锡兰项目运行锡兰类型检查器,它正是 typechecker/src/main/Main.java 的锡兰版本。

这个项目应该自己进行类型检查。

它编译没有错误,但在运行时无法加载依赖项以进行类型检查。

文件:source/com/example/withmodule/module.ceylon

文件:source/com/example/withmodule/run.ceylon

它编译没有错误。

但是在运行时会产生错误:

这对我来说毫无意义,因为编译和类型检查之前已经成功。

这是一个全新的 ceylon 1.3.0 下载,未安装,只需从解压缩的 .tar.gz 运行即可。

类型检查器需要哪些它没有的额外信息?