【发布时间】:2020-09-17 08:08:23
【问题描述】:
我正在尝试在 Swift 上编写以下 Java 代码。
public static double eval(final String str) {
return new Object() {
int pos = -1, ch; // these fields are used across all the methods
void nextChar() {
// ...
}
boolean eat(int charToEat) {
// ...
// calls nextChar somewhere
}
double parse() {
// ...
// calls nextChar and parseExpression somewhere
}
double parseExpression() {
// ...
// calls parseTerm somewhere
}
double parseTerm() {
// ...
// calls parseFactor somewhere
}
double parseFactor() {
// ...
// recursively calls parseFactor and parseExpression somewhere
}
}.parse();
}
我在 Swift 上遇到了“无法实例化协议类型'AnyObject'”的问题。我的 Swift 代码如下。我怎样才能实现这种转换?我的意思是,如何在 Swift 上将函数返回给任何对象?
func eval(str: String) -> Double {
return AnyObject { //Here it says "Protocol type 'AnyObject' cannot be instantiated"
...
func parse() -> Double {
...
}
}.parse()
}
为了清楚起见,我在上面简要地写了,但是当我看到答案时,最好发布整个代码。下面提供了快速代码。我正在研究 Boann 在 url https://stackoverflow.com/a/26227947/12698480 上提供的计算器代码
【问题讨论】:
-
这与您几天前发布的几乎完全相同的问题,而不是发布一些 java 代码作为答案,您不能用语言解释您的函数应该做什么,它是什么你正在努力实现?
-
如果您可以显示第一个
....... (some code)包含的代码,我可以提供更有用的答案。 -
@Sweeper 我在第一篇文章中添加了整个代码,你现在可以看看吗?
-
@JoakimDanielson 我在帖子中添加了整个代码,你现在可以看一下吗?
-
查看更新后的答案。我已对您的问题进行了编辑,以包含您的问题所需的最少信息,以免过于宽泛。
标签: swift type-conversion