Expressions are not allowed at the top level
来源:互联网 发布:怎么看淘宝的注册时间 编辑:程序博客网 时间:2024/06/06 05:39
Swift中,直接在类的外面调用类内部的方法,会出现Bug:Expressions are not allowed at the top level。
原因是:
在App工程里, .swift
文件都是编译成模块的,不能有top level code
。
先明确一个概念,一个.swift
文件执行是从它的第一条非声明语句(
表达式、控制结构)开始的,同时包括声明中的赋值部分,所有这些语句,构成了该.swift
文件的top_level_code()
函数。而所有的声明,包括结构体、类、枚举及其方法,都不属于 top_level_code()
代码部分,其中的代码逻辑,包含在其他区域,top_level_code()
可以直接调用他们。程序的入口是隐含的一个 main(argc, argv)
函数,该函数执行逻辑是设置全局变量C_ARGC C_ARGV
,然后调用 top_level_code()。不是所有的 .swift 文件都可以作为模块,目前看,任何包含表达式语句和控制语句的 .swift 文件都不可以作为模块。正常情况下模块可以包含全局变量(var)、全局常量(let)、结构体(struct)、类(class)、枚举(enum)、协议(protocol)、扩展(extension)、函数(func)、以及全局属性(var { get set })。这里的全局,指的是定义在 top level 。这里说的表达式指expression
,语句指 statement
,声明指declaration
。因此,如果代码中直接在类的外面调用类内部的方法,则该.swift 文件是编译不成的模块的,所以会编译报错。
- Expressions are not allowed at the top level
- lambda expressions are not supported at this language level intellij
- lambda expressions are not supported at this language level
- lambda expressions are not supported at this language level
- Lambda expressions are not supported at this language level
- lambda expressions are not supported at this language level
- lambda expressions are not supported at this language level解决方法
- lambda expressions are not supported at this language level错误
- lambda expressions are not supported at this language level
- lambda expressions are not supported at this language level
- lambda expressions are not supported at this language level解决方法
- Lambda expressions are not supported at language level '1.6
- lambda expressions are not supported at this language level(需设置project language level)
- 关于lambda expressions are not supported at this language level问题
- 解决lambda expressions are not supported at this language level的问题
- Lambda学习、配置以及lambda expressions are not supported at this language level
- Subqueries are not allowed in this context. Only scalar expressions are allowed.
- java "lambda expressions not supported at this language level"
- AFNetworking和 NSURLSession (转载的准备系统的学习下)
- Python字符串
- 解决Android:Installation error: INSTALL_FAILED_MEDIA_UNAVAILABLE问题
- jenkins maven配置
- Android对象序列化(二)-----Intent传递对象的两种方法(Serializable,Parcelable)
- Expressions are not allowed at the top level
- linux同时创建多进程的方法
- 软件测试流程
- Reverse Integer C++
- 欢迎使用CSDN-markdown编辑器
- postgresql 判断参数是否为空,拼接字符串的条件查询
- C++ 多线程
- webapp地址
- 生动详细解释javascript的冒泡和捕获