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 条评论
登录 后参与评论

相关文章

来自专栏zingpLiu

python基础(一)

  python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚...

2092
来自专栏琯琯博客

设计模式详解

需要说明的一点是,文中的 UML 类图和规范的 UML 类图不大相同,其中组合关系使用以下箭头表示:

1003
来自专栏技术/开源

30分钟?不需要,轻松读懂IL

先说说学IL有什么用,有人可能觉得这玩意平常写代码又用不上,学了有个卵用。到底有没有卵用呢,暂且也不说什么学了可以看看一些语法糖的实现,或对.net理解更深一点...

1977
来自专栏Python小屋

Python+tensorflow计算整数阶乘的方法与局限性

本文代码主要演示tensorflow的基本用法。 import tensorflow as tf # 创建变量,保存计算结果 start = tf.Variab...

3505
来自专栏码洞

《快学 Go 语言》第 3 课 —— 分支与循环

上面这个等式每一个初学编程的同学都从老师那里听说过。它并不是什么严格的数据公式,它只是对一般程序的简单认知。数据结构是内存数据关系的静态表示,算法是数据结构从一...

1013
来自专栏Java学习网

学习Java需吃透这些基本概念

学习好比盖房子,打地基好很重要,房了能盖多高关键看地基;学习同样道理,基础知识是以后学习一切技术的必要条件,我们在准备学习一门开发语言时,首先要学习它的基础,不...

25310
来自专栏Java爬坑系列

【Java入门提高篇】Day16 Java异常处理(上)

1565
来自专栏Fundebug

JavaScript正则表达式进阶指南

1248
来自专栏Play & Scala 技术分享

挑逗 Java 程序员的那些 Scala 绝技

有个问题一直困扰着 Scala 社区,为什么一些 Java 开发者将 Scala 捧到了天上,认为它是来自上帝之吻的完美语言;而另外一些 Java 开发者却对它...

1686
来自专栏coder修行路

《深入理解计算机系统》阅读笔记--信息的表示和处理(上)

结果是负数!!!! 这个结果理论上是非常不应该的,这已经违背了我们的常识,毕竟正数的乘积,最后的结果应该还是一个正数,但是这里出现负数的情况,虽然结果不对,但是...

950

扫码关注云+社区

领取腾讯云代金券