美文网首页swift
Swift是一门动态类型的强类型语言

Swift是一门动态类型的强类型语言

作者: TomatosX | 来源:发表于2018-01-15 00:33 被阅读1301次

之前我一直以为,Swift是一门弱类型的语言。

判断依据:

Swift 变量不强制的指定类型,而是用 varlet 表示可变与不可变。所以,Swift是一门弱类型的语言。

但是,看了一下强弱类型的时候,才恍然大悟。其实 varlet 的特性,只是说明Swift是一门动态类型的语言。并不能指出是否是强或弱类型。

一些定义:

  • 静态类型语言:是一种编译器无法自动检测类型的语言。
  • 动态类型语言:是一种编译器能够自动检测类型的语言。
  • 强类型语言:强类型语言也称为强类型定义语言。是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。
  • 弱类型语言:弱类型语言也称为弱类型定义语言。与强类型定义相反。像vb,php,js等就属于弱类型语言。

光看定义不够生动,还是来举个例子:

Java是一种静态类型语言,也是一种强类型语言。因为编译器不能自动检测类型,所以它是静态的,而且类型受到严格限制,所以它也是一种强类型语言。

javascript是一种动态类型语言和非强类型语言。
因为编译器能够在运行时检测类型,并且类型也不受严格限制。

所以,基于上面的例子,你可以说swift允许我们不声明类型并且让编译器自己检测类型,所以swift被Apple官方公布为动态类型语言。

let num = 1

这里没有强制声明类型,看似一个弱类型的语言,其实不然。Swift 编译器能够推断出 numInt 类型。那么 num 就不能再被赋值为 String 类型。更不能写成如下的形式:

let num = 1
let str = "2"
let result = num + str

编译器将会报如下的错误:

error: binary operator '+' cannot be applied to operands of type 'Int' and 'String'
let result = num + str
             ~~~ ^ ~~~
note: overloads for '+' exist with these partially matching parameter lists: (Int, Int), (String, String), (Int, UnsafeMutablePointer<Pointee>), (Int, UnsafePointer<Pointee>)
let result = num + str
                 ^

这说明了,Swift 是一门强类型的语言。Swift 的类型声明,你可以看成是在定义变量的时候,隐式声明的(由编译器推断出),当然也可以显式的声明。如下:

let num: Int = 1

参考:

相关文章

  • swift 与 Objective- C的区别

    1、Swift是强类型(静态)语言,有类型推断,Objective-C弱类型(动态)语言 2、Swift面向协议编...

  • Swift和Objective-C对比(一)

    1、Swift是强类型(静态)语言,有类型推断,Objective-C弱类型(动态)语言 2、Swift面向协议编...

  • Swift是一门动态类型的强类型语言

    之前我一直以为,Swift是一门弱类型的语言。 判断依据: Swift 变量不强制的指定类型,而是用 var 和 ...

  • python面试题

    python语言特性 python是静态还是动态类型?是强类型还是弱类型? 动态强类型语言 动态还是静态指的是编译...

  • TypeScript 基础数据类型

    TS是JS的超集,JS是一门动态弱类型语言。与之对应的自然有静态类型语言和强类型语言。在学习一门语言之前是值得花时...

  • swift语言层面解析

    swift是一门静态语言,但是可以嵌入动态内容。比如: 上述程序编译是静态的,强类型检查。但是执行 c 字符串时,...

  • 每天学一点Swift——Swift的基本数据类型(一)

    一. Swift语言是一门强类型的语言。 强类型包含了两方面的含义:(1).所有的变量都必须先声明后使用;(...

  • Python 语法(一)

    1、Python 语言特性 1.1 Python 是静态还是动态?强还是弱类型 动态强类型语言 动态还是静态:指...

  • 编程语言类型(动态语言,静态语言及其它)

    动态语言: 静态语言: 动态类型语言: 静态类型语言: 强类型语言: 弱类型语言: 计算机只能理解机器码,所有的高...

  • Swift的数据类型

    1.Swift中的类型推导 Swift是强类型的语言(有明确的类型) 例如:类型可以省略 let e :Int=6...

网友评论

    本文标题:Swift是一门动态类型的强类型语言

    本文链接:https://www.haomeiwen.com/subject/pltroxtx.html