zephir-(6)运算符

#zephir-运算符#

##前言## 先在这里感谢各位zephir开源技术提供者

了解的动态变量和静态变量之后我们今天来了解一下在编码工作中至关重要的运算符在zephir中的使用,已经一些特殊函数对空的验证等等之类操作的讲解.

注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术

附上:

喵了个咪的博客:w-blog.cn

zephir官网地址:http://zephir-lang.com/

github地址:https://github.com/phalcon/zephir

##1. 运算符##

Zephir运算符类似于PHP的,也继承了他们的一些行为。

###1.1 算术运算符###

支持以下操作:

操作	    例子
取反  	   - a
加法  	   a + b
减法	    a - b
乘法	    a * b
除法    	   a / b
取模        % b

###1.2 比较运算符###

比较运算符的类型取决于变量相比,例如,如果两个操作数是动态变量相比PHP的行为是一样的:

a ==	     平等的            真的如果a等于b在杂耍类型。
== b	     相同的            真如果a = b,它们是相同的类型。
a! = b       不平等的	       后如果不等于b类型杂耍。
< > b        不平等的	       后如果不等于b类型杂耍。
a! == b	     不完全相同         真的不等于b,或者他们不是同一类型的。
< b	         小于              真正的如果是严格小于b。
a >	         大于              真正的如果是严格大于b。
<= b	     小于或等于         真正的如果是小于或等于b。
a >=	     大于或等于         真正的如果是大于或等于b。

例子:

if a == b {
    return 0;
} else {
    if a < b {
        return -1;
    } else {
        return 1;
    }
}

###1.3 逻辑运算符###

支持以下操作:

操作	    例子
并	    && b
或	    a|| b
不	     !

例子:

if a && b || !c {
    return -1;
}
return 1;

###1.4 位运算符###

支持以下操作:

操作	         例子
和	          a&b
包括           a|
异或           a^
取反            ~a
左移位         << b
右移位         a >>

例子:

if a & SOME_FLAG {
    echo "has some flag";
}

###1.5 三元运算符###

Zephir支持三元操作符和C或PHP相似:

let b = a == 1 ? "x" : "y"; 

##2 特殊的操作##

###2.1 Empty###

这个操作符允许检查是否一个表达式是空的。 “Empty”意味着表达式为空,空字符串或一个空数组:

let someVar = "";
if empty someVar {
    echo "is empty!";
}

let someVar = "hello";
if !empty someVar {
    echo "is not empty!";
}

###2.2 Isset###

这个操作符检查是否一个属性或索引数组或对象中定义:

let someArray = ["a": 1, "b": 2, "c": 3];
if isset someArray["b"] { //检查数组索引“b”
    echo "yes, it has an index 'b'\n";
}

使用“isset”返回表达式:

return isset this->{someProperty};

注意,“isset”更像PHP的array_key_exists功能,Zephir中“isset”返回true即使数组索引或属性是空的。

###2.3 Fetch###

“Fetch”是一个操作符,减少在PHP中常见的操作为一个指令:

<?php

if (isset($myArray[$key])) {
    $value = $myArray[$key];
    echo $value;
}

在Zephir,您可以编写相同的代码为:

if fetch value, myArray[key] {
    echo value;
}

“Fetch”只返回true,如果数组中的“key”是一个有效的值,只有在这种情况下,写入值。

###2.4 Typeof ###

这个操作符检查变量类型。 “Typeof”像比较运算符:

if (typeof str == "string") { // or !=
    echo str;
}

typeof也很像PHP函数“gettype”。

return typeof str;

小心:如果你想检查对象“可以被调用”会一直使用typeof的比较运算符。

##3. 总结##

本小节主要讲解了一些常用的运算符和一些常用的特殊函数,其实看起来和php中的差别并不大,这也是作者的用心,在之后将来学习数组和对象相关的知识希望大家喜欢!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

zephir技术交流:246348908 欢迎大家的加入!

感谢zephir开发人员:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • zephir-(12)php函数和异常处理

    #zephir-php函数和异常处理# ? ##前言## 先在这里感谢各位zephir开源技术提供者 经过了一个多月的学习,zephir的文档译文和基础讲解也将...

    喵了个咪233
  • PhalGo-Viper获取配置

    #PhalGo-Viper获取配置 ? viper项目地址:https://github.com/spf13/viper ##什么是viper viper是国外...

    喵了个咪233
  • phalapi-入门篇4(国际化高可用和自动生成文档)

    phalapi-入门篇4(国际化高可用和自动生成文档) ? 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 在...

    喵了个咪233
  • 通俗易懂PHP基础【4-运算符与表达式】

    骐骥一跃,不能十步;驽马十驾,功在不舍;锲而舍之,朽木不折;锲而不舍,金石可镂。

    Lemon黄
  • PHP 学习筆記[1] —— ThinkPHP 公共函数整理

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

    泥豆芽儿 MT
  • LeetCode 126 Word Ladder II

    具体的思路是,分别从起始和结束字符串出发两遍BFS, 得到每个点到起始字符串的最短距离和终点字符串的最短距离。 然后再从起始字符串出发,DFS 寻找路径。由于...

    ShenduCC
  • 概率论之概念解析:引言篇

    【导读】专知这两天推出概率论之概念解析系列:极大似然估计和贝叶斯推断进行参数估计,大家反响热烈,数据科学家Jonny Brooks-Bartlett的系列博客深...

    WZEARW
  • C++之布尔类型和类型

    程序手艺人
  • 「产品战略管理 」产品策略工具 - BCG增长 - 共享矩阵

    在1970年代早期,波士顿咨询集团开发了一个管理不同业务部门(或主要产品线)组合的模型。BCG增长份额矩阵以市场增长率与市场份额相对于竞争对手的图表显示各种业务...

    首席架构师智库
  • 「战略产品管理 」产品策略工具 - BCG增长 - 共享矩阵

    在1970年代早期,波士顿咨询集团开发了一个管理不同业务部门(或主要产品线)组合的模型。BCG增长份额矩阵以市场增长率与市场份额相对于竞争对手的图表显示各种业务...

    首席架构师智库

扫码关注云+社区

领取腾讯云代金券