在声明变量时明确声明变量类型是最佳实践吗?

5

我是一名新手,正在学习Swift语言并试图在编程时养成良好的习惯。

在声明变量时,显式地声明变量类型是否是最佳实践?例如:

var str:String = "likeThis"

这样做是否可行呢:
var str= "likeThis"

无论你做什么,都要保持一致。我认为在几乎所有情况下,var str: String = "likeThis"可能是多余和不必要的。除了数字类型之外,可能需要一个例外。有时你需要明确地使用NSIntegerCGFloat,而Swift不会隐式转换。 - nhgrif
5
如果 ((1 as Int + 1 as Int == 2 as Int) as Bool) == true { println("在上下文明显的情况下,类型只会妨碍可读性" as String) as Void } - Airspeed Velocity
3个回答

3

你知道,两种选项都是可以接受的。然而,我见过的标准做法是不声明变量类型,除非必要,理由是这些多余的标记会降低可读性。

在这里,这是不必要的,因为编译器将推断变量类型。Ray Wenderlich's Swift style guide也同意这个观点。


1
根据Swift语言指南

在实践中很少需要编写类型注释。如果您在定义常量或变量时提供了初始值,Swift 几乎总是可以推断出用于该常量或变量的类型,如类型安全性和类型推断中所述。

并附有同一指南中的示例:

var currentLoginAttempt = 0

看起来使用var str= "likeThis"让编译器推断类型是非常好的实践。

免责声明:我也是Swift的新手,这个答案仅基于我在课堂上学习和阅读语言指南所学到的知识。我没有Swift的专业经验。


-1

Swift中的变量与常量

var str = "likeThis" // variable
let str = "likeThis" // constant

尽可能使用let来声明变量是最佳实践,因为这样可以让编译器执行优化,否则它将无法执行。所以请记住:优先使用let

显式类型与推断类型

到目前为止,我们还没有为这些常量和变量明确设置任何类型,因为编译器有足够的信息自动推断。

例如,因为您将str设置为"likeThis",编译器知道"likeThis"是一个字符串,因此它会自动将str的类型设置为字符串。

但是,如果您想要显式设置类型,也可以这样做。请尝试通过将设置tutorialTeam的行替换为以下内容来进行测试:

let str: String = "likeThis"

你是否曾经想过应该显式地设置类型,还是让编译器为你推断类型。我们认为,在可能的情况下,让编译器自动推断类型是更好的做法,因为这样你就可以获得 Swift 的主要优势之一:简洁易读的代码。

因此,请将该行切换回推断类型:

let str = "likeThis"

在一行中只有“var myAgeOnFriday”的代码无法编译。 - nhgrif
@nhgrif,我知道它不会编译。我只是从“var myAgeOnFriday”处理到“var myAgeOnFriday:Int = 23”,以便解释变量声明的整个过程。它们只是步骤:“var myAgeOnFriday”->“var myAgeOnFriday:Int”->“var myAgeOnFriday:Int = 23”。请阅读完整的答案,然后判断并向下投票。 - MCHAppy
1
Swift是一种类型推断语言。您不需要告诉它23是一个整数。为了更好的可读性,它允许您在这种明显的情况下省略类型。 - Leo Dabus
@nhgrif 不需要从 var myAgeOnFriday 处理到 var myAgeOnFriday : Int = 23,我的答案现在似乎更明显和简洁。 - MCHAppy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接