Swift开篇002->基本运算符

本文详细介绍了Swift语言中的各类运算符,包括赋值、算术、比较、逻辑等,并给出了具体的使用示例。此外,还介绍了字符串的初始化、拼接及字符处理等关键操作。

PART_A 运算符

  1. 赋值运算符:

    • 普通赋值

      var num
      num = 5
      
    • 元组赋值

      let (x, y) = (0, 0)
      
    • = 操作不返回任何值

  2. 算数、组合赋值、自增自减、、负号、字符串拼接

    • 求余时符号只看左边,可对浮点数求余

      let a = 3, b = 4
      
      // 算数运算
      var c = 0
      c = a + b
      c = a - b
      c = a * b
      c = a / b
      c = a % b
      
      // 组合赋值运算
      c += a
      c -= a
      c *= a
      c /= a
      c %= a
      
      // 自增自减运算
      c++ // 先自增,再返回值
      c--
      ++c // 先返回值,再自增
      --c
      
      // 负号
      -c
      
      // 字符串拼接
      String str = "hello " + "world"
      
  3. 比较运算符

    let a = 3, b = 4
    
    a == b
    a != b
    a > b
    a >= b
    a < b
    a <= b
    
  4. ? : 三目运算符

    let num = 3
    num == 5 ? "yes" : "no"
    
  5. ?? 空合运算符

    • 判断a,若为空则返回b值,若不为空解封并返回a值

    • a必须是Optional类型

    • b的存储值类型必须和a一致

      var a:Int?, b = 5
      a ?? b
      a != nil ? a! : b
      
  6. 区间运算符

    • a ... b 闭区间

      • b必须大于a

      • 半开区间:a ..< b 或者 a >.. b

      • 数组遍历时:0 ..< strArr.count

      for x in 1 ... 9 {
          for var y = 1; y <= x; y++ {
              print("\(y) * \(x) = \(x * y)", terminator:"\t")
              // 字符串插值:通过\()来插入实际值
              // \()中不能包含非转义\、回车、换行符
          }
          print()
      }
      
  7. 逻辑运算

  • 非:!a

  • 与(短路):a && b

  • 或(短路):a || b

  1. 推荐使用 () 来明确优先级

PART_B 字符串

字符串是值类型

  1. 初始化空字符串(两种方式等价)

    • var str = ""

    • var str = String()

  2. 判空

    • str.isEmpty
  3. 拼接

    • var str = "hi " + "catface"

      var str = "hello"
      let c : Character = "!"
      str.append(c) // str = "hello!"
      
  4. 字符 Character

    • 初始化:let c : Character = "!"

    • 字符数组构造字符串

      let characters : [Character] = ["c", "a", "t", "
      
<think>我们正在讨论PHP中的箭头运算符->)。根据引用[1]的内容,箭头运算符用于访问对象的属性和方法。在面向对象编程中,对象是类的实例,而类定义了属性和方法。箭头运算符允许我们通过对象实例来访问这些属性和方法。 例如,在引用[1]的示例中: - 首先定义了一个`Person`类,它有一个公共属性`$name`和一个公共方法`greet`。 - 然后创建了一个`Person`类的实例`$person`。 - 使用箭头运算符`->`给属性`$name`赋值:`$person->name = 'John';` - 使用箭头运算符`->`调用方法`greet`:`$person->greet();`,这将输出"Hello, John"。 因此,箭头运算符在PHP中主要用于对象成员(属性和方法)的访问。 另外,引用[2]中展示了在Laravel框架中(使用查询构建器)箭头运算符的另一种用法:用于访问JSON列中的属性。例如:`'options->isAdmin'`。这里的箭头运算符用于指示在JSON列`options`中访问`isAdmin`键。但请注意,这种用法是特定于Laravel框架的,并不是PHP核心语言的一部分。在核心PHP中,箭头运算符只用于对象。 引用[3]和[4]分别讨论了JavaScript中的引用类型和Swift中的inout参数,与PHP的箭头运算符无关。 因此,总结如下: 在PHP中,箭头运算符->)用于: 1. 访问对象的属性。 2. 调用对象的方法。 例如: ```php class Car { public $color; // 属性 public function startEngine() { // 方法 echo "Engine started!"; } } // 创建对象 $myCar = new Car(); // 使用->访问属性 $myCar->color = "red"; // 使用->调用方法 $myCar->startEngine(); // 输出 "Engine started!" ``` 注意事项: - 箭头运算符只能用于对象实例,不能用于静态成员(静态成员使用双冒号`::`)。 - 在对象内部,可以使用`$this->`来访问当前对象的属性和方法。 相关问题: 1. 在PHP中,如何区分箭头运算符->)和双冒号运算符(::)的用法? 2. 除了访问属性和方法,PHP的箭头运算符还有其他用途吗? 3. 在Laravel框架中,箭头运算符在数据库查询中有什么特殊作用?</think>### PHP 箭头运算符 `->` 的作用详解 箭头运算符 `->` 是 PHP 面向对象编程(OOP)中的核心操作符,主要用于**访问对象的属性和方法**。以下是具体作用和用法: #### 1. 访问对象属性 ```php class User { public $name; // 声明公共属性 } $user = new User(); // 创建对象实例 $user->name = "张三"; // 使用->设置属性值 echo $user->name; // 使用->读取属性值(输出:张三) ``` [^1] #### 2. 调用对象方法 ```php class Calculator { public function add($a, $b) { return $a + $b; } } $calc = new Calculator(); echo $calc->add(5, 3); // 使用->调用方法(输出:8) ``` [^1] #### 3. 链式调用(方法级联) ```php class QueryBuilder { public function select() { echo "SELECT * "; return $this; // 返回当前对象 } public function where() { echo "WHERE ..."; return $this; } } $query = new QueryBuilder(); $query->select()->where(); // 链式调用(输出:SELECT * WHERE ...) ``` [^2] #### 4. 访问嵌套对象 ```php class Address { public $city = "北京"; } class Profile { public $address; public function __construct() { $this->address = new Address(); // 嵌套对象 } } $profile = new Profile(); echo $profile->address->city; // 访问嵌套属性(输出:北京) ``` --- ### 关键特性总结 | 特性 | 说明 | 示例 | |------|------|------| | **对象访问** | 只能用于对象实例 | `$obj->property` | | **方法调用** | 执行对象内部函数 | `$obj->method()` | | **动态属性** | 可访问运行时添加的属性 | `$obj->newProp = "value"` | | **链式操作** | 支持连续方法调用 | `$obj->a()->b()` | | **与`::`区别** | `::`用于静态成员,`->`用于实例成员 | `Class::staticMethod()` vs `$obj->method()` | > ⚠️ 注意:箭头运算符**不能用于数组**(数组使用`[]`),也不能用于基本数据类型(如字符串、整数)。 --- ### 实际应用场景 1. **数据库操作**(Laravel Eloquent): ```php $user = User::find(1); // 获取ID为1的用户 echo $user->email; // 访问用户邮箱 $user->update(['name'=>'李四']); // 调用更新方法 ``` [^2] 2. **JSON 数据处理**: ```php $data = json_decode('{"user": {"name": "王五"}}'); echo $data->user->name; // 输出:王五 ``` 3. **服务容器调用**: ```php $logger = $container->get('logger'); // 从容器获取服务 $logger->log("系统启动"); ``` --- ### 常见错误示例 ```php // 错误1:尝试访问非对象 $str = "hello"; echo $str->length; // 致命错误:不能访问字符串成员 // 错误2:混淆静态调用 class Math { public static function square($n) { return $n * $n; } } $math = new Math(); echo $math->square(4); // 应使用 Math::square(4) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值