术语“声明”和“定义”在Apple的Swift文档中被同义使用,这让我感到困惑。
在“初始化”部分(谈及类初始化程序)下,Apple声明:
您可以在初始值设定项中设置存储属性的初始值,也可以将默认属性值指定为属性的定义的一部分。
在一个小节中,他们还说:
您可以在初始化程序中设置存储属性的初始值,如上所示。或者,将默认属性值指定为属性的声明。
的一部分
我认为变量声明与变量定义不同。
答案 0 :(得分:2)
你是对的,这两个意思不同,我认为大多数人只是以同样的意思使用它们,我认为这也是那些AppleDocs的情况。关于主题的Here is great article:
<强>摘要强>
声明提供符号的基本属性:其类型及其类型 名称。定义提供了该符号的所有细节 - 如果是的话 一个功能,它做什么;如果它是一个类,它是什么领域和方法 具有;如果它是变量,则存储该变量。通常, 编译器只需要有一个声明的东西 将文件编译成目标文件,期望链接器可以找到 来自另一个文件的定义。如果没有源文件定义了 符号,但它被声明,你会在链接时得到错误 抱怨未定义的符号。
答案 1 :(得分:2)
在网上搜索了大量合法解释后,我似乎找到了答案:
问题在于这两个术语在某种程度上重叠。定义也用作声明,因为它们将特定类型的标识符注入范围。但是,声明不是定义,因为它不需要为声明的对象进行存储分配。为了增加混淆,定义和声明的语义在应用于类型和函数时略有不同,我将暂时展示。那么让我们看看对这两个术语的更详细的分析。
以下是文章:Declarations and Definitions。
文章给出了进一步的解释和例子。
答案 2 :(得分:1)
变量声明意味着告诉编译器它们是特定数据类型的var \ funct \ struct。变量的定义意味着要求编译器将内存分配给变量或定义该变量的存储。你可以只定义一次变量,但你可以多次声明它。
答案 3 :(得分:0)
我认为Apple's Swift 4 Language Reference可以被解释为权威的答案。从Declarations部分(强调我的):
声明会在您的程序中引入新名称或构造。 例如,您使用声明来引入函数和方法, 变量和常量,以及定义新的命名枚举, 结构,类和协议类型。您也可以使用声明 扩展现有命名类型的行为并导入符号 进入你在别处宣布的程序。
在Swift中,大多数声明也是定义 它们是在同一时间实施或初始化的 声明。也就是说,因为协议没有实现其成员, 大多数协议成员只是声明。为方便起见 因为斯威夫特这个词的区别并不重要 声明涵盖声明和定义。