字面量

作者: 纳兰沫 | 来源:发表于2019-09-25 17:17 被阅读0次

字面量

常见字面量的默认类型
常见字面量的默认类型.png
可以通过typealias修改字面量的默认类型
public typealias IntegerLiteralType = Int
public typealias FloadLiteralType = Float

swift自带类型之所以能够通过字面量初始化 是因为他们遵守了对应的协议

字面量遵守的协议.png

字面量的应用

extension Int: ExpressibleByBooleanLiteral {
    public init(booleanLiteral value: Bool) {
        self = value ? 1 : 0
    }
}

var num: Int = true
print(num)

1
extension Int: ExpressibleByStringLiteral {
    public init(stringLiteral value: String) {
        self = Int(value) ?? 0
    }
}

var ma: Int = "dadad"
print(ma)

0
//CustomStringConvertible  描述协议
class Student: ExpressibleByIntegerLiteral,ExpressibleByFloatLiteral,ExpressibleByStringLiteral,CustomStringConvertible {
    
    var name: String = ""
    var score: Double = 0
    required init(floatLiteral value: Double) {
        self.score = value
    }
    required init(stringLiteral value: String) {
        self.name = value
    }
    required init(unicodeScalarLiteral value: String) {
        self.name = value
    }
    required init(extendedGraphemeClusterLiteral value: String) {
        self.name = value
    }
    required init(integerLiteral value: Int) {
        self.score = Double(value)
    }
    var description: String {
        return "name = \(name),score=\(score)"
    }
}

var stu: Student = 90
print(stu)
stu = 98.5
print(stu)
struct Point {
    var x = 0.0,y = 0.0
}

extension Point: ExpressibleByArrayLiteral,ExpressibleByDictionaryLiteral {
    
    init(arrayLiteral elements: Double...) {
        guard elements.count > 0 else {return}
        self.x = elements[0]
        guard elements.count > 1 else {return}
        self.y = elements[1]
    }
    init(dictionaryLiteral elements: (String, Double)...) {
        for (k,v) in elements {
            if k == "x" {
                self.x = v
            }else if k == "y" {
                self.y = v
            }
        }
    }
}

var p: Point = [10.5,20.5]
print(p)
p = ["x": 11,"y": 22]
print(p)

Point(x: 10.5, y: 20.5)
Point(x: 11.0, y: 22.0)

相关文章

  • 字面量

    字面量: 1、数字字面量: 1.1、整数: 10进制:普通数字就是十进制 8进制:以0开头(...

  • 字面量

  • 字面量

    字面量 常见字面量的默认类型 可以通过typealias修改字面量的默认类型 swift自带类型之所以能够通过字面...

  • 字面量

    字面量(Literal) 上面代码中的10、false、"Jack"就是字面量 常见字面量的默认类型 public...

  • 字面量

    在读《编写高质量iOS与OS X代码的52个有效方法》这本书时,才发现了一个自己一直遗漏的问题,NSArr...

  • Scala函数定义

    函数字面量 常说的字面量有:整型字面量 val i = 123浮点型字面量 val i = 3.14布尔型字面量 ...

  • JavaForAndroid-03

    一、字面量int i = 0; //0就是字面量数值型变量字面量:1.整数字面量为整型(int)2.小数字面量为双...

  • 字面量转换

    在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。Swift 为我...

  • Swift 字面量

    所谓字面量,就是指像特定的数字,字符串或者是布尔值这样,能够直接了当地指出自己的类型并为变量进行赋值的值。比如在下...

  • 字面量数组

    数组是常用的数据结构,如果不适用字面量语法,那么就要这样来创建数组: NSArray *animals = [NS...

网友评论

      本文标题:字面量

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