用Kotlin改写PHP程序是什么样的体验
发布网友
发布时间:2022-04-20 16:54
我来回答
共1个回答
热心网友
时间:2023-07-14 20:34
学Kotlin其实要看:http//kotlinlang.org/docs/kotlin-docs.pdf
在线版是不完整的!!!少了一些章节,会有点难看懂后面的文档。
我选择了WordPress里的错误消息管理类wp-error.php为对象,没有依赖其他具体场景和类,所以比较适合移植和对比。
代码是前几天整理的,为了便于在线查看,把它贴到Git上了。代码查看地址:http//git.oschina.net/web3d/kotpress/blob/master/Error.kt
为了简化逻辑,将Error类中要保存的data、code全部设定为String类型。
基础知识
1.语感
上帝说,要有光,从此就有光了;奥巴马说,编程语言是门外语,从此,我们也是精通多种外语的人了。
Kotlin从代码的语感上,是有着python的风格的,像:
if (obj is String) return obj.length
if (x in 1..y - 1) println("OK")
是不是很接近英文原生语句?
2.变量
局部变量分为可变变量和不变变量,分别用 var(variable) 和 val(?)来声明。
variable
内存中的变量初始化,一般要经过两步,声明变量类型、开辟内存空间;赋值初始化。
var y: Int;
y = 10;
目前多数语言的写法,都是一句话完成这两步。
var y: Int = 10;
而Kotlin中更简洁的写法是:
var y = 10;
y 被赋值时,会被自动推断(inferred)为整型Int,这种写法有点亲切感了。
注:类型自动推断是强静态类型语言范围的一种特性。自动推断类型的能力让很多编程任务变得容易,让程序员可以忽略类型标注的同时仍然允许类型检查。类型推导不是Go语言首创,但是现代语言中,Go中运用广泛,Kotlin也引入了这种特性。
Kotlin是静态类型的,如果想将y重新赋值为其它类型如字符串是不行的:
y = “13"
Val
val 基本特性和用法与var相同,但有点类似我们一般语言中常量的概念:被初始化赋值一次后,不能再重新赋值;与常量不同的是,它可以作为局部变量。如:
val y = 10
如果继续在后面:
y = 12
编译器就会报错。
当然,不能重新赋值不是说变量所代表的对象包含的值不能变,下文的数组对象array,同样是通过val声明的,但它里面包含的值是可以继续操作的。
刚从PHP转过来的话,应该还有点适应不了:要熟悉和记忆各种数据类型和集合类型;每次声明一个变量,还要想这个变量是否可变,太烧脑了。但这就是一种更朴实的思维方式,前面多想想,后面的代码就会更可靠,不会因为一些意外的操作造成数据的值或类型被破坏。
类的普通属性应该都用 var 来声明,因为可能要在某个方法中将另一个对象赋给它;但局部变量应当尽可能用val。
3.类型推导
Java里面定义一个字符串类型的一维数组列表要这样写:
ArrayList<String> array = new ArrayList<String>();
Kotlin里面:
Kotlin可与Java互通,所以,它也可以写成类似上面的形式:
val array: ArrayList<String> = ArrayList<String>();//没有new关键词
array.add(“abc")
但Kotlin风格的写法为:
val array = arrayListOf<String>();
array.add(“abc")
PHP里面:
$array = [];
$array[] = ‘abc';
4.this
和Java一样,Kotlin中大多数时候,this可以省略,这是现代编程语言都支持的特性。
像PHP、Python这种都需要有个指代对象去访问。
5.empty/Blank
再牛掰的语言,可能也解决不了空字符串的问题;一个字符串对象就是可以包含空字符串、或者可能含有多个空格的字符串。但逻辑上,他们是无效的数据!所以几乎每个有字符串的地方,可能都要判断一下,尤其是做键名等名称标识的场景。
WordPress这个Error类就是典型场景。错误消息是按错误代码 => 错误消息 的格式存储的,如果以空字符串为键名,它到底代表什么含义,无法明确得知。所以我们就要判断是否为empty,但php里的empty判断在这真正有用吗,如果这个键名里包含的字符全是空格呢?所以像Java和Kotlin中的String对象除了isEmtpy()方法外都会有个isBlank()的判断。
但在演示代码中,我反复斟酌后,还是去掉了相关判断,因为几乎这个类每个方法里都得加,这样没有美感,不科学。
6.句尾分号可省略
单行语句多数情况可以省略分号
7.烧脑的Exception
PHP中,我们还没有养成抛出异常、然后捕捉异常的编程习惯。一般都是通过多种返回值类型或范围去判断结果,是成功还是失败、正常还是异常。到了Kotlin这类静态类型语言中,方法返回值也是需要一种确定的类型,那么失败或异常就只能通过抛出异常的方式去做了。异常的捕捉如果不到位的话,就很容易出现不健壮的体验,动不动的崩溃了。
面向对象的编程语言有哪些?
Swift:Swift是由苹果公司开发的面向对象编程语言,用于iOS和macOS应用程序开发。它被设计为易学易用,同时提供了高性能和安全性。Kotlin:Kotlin是一种基于Java虚拟机的静态类型语言,它在Android应用程序开发中获得了广泛应用。Kotlin通过简化代码和提供现代语言功能来改善开发者体验。PHP:PHP是一种用于Web开...
软件开发要用到哪几种语言
C#是Microsoft推出的编程语言,主要用于Windows应用程序和Web应用程序的开发。6.**PHP:PHP是一种用于服务器端开发的脚本语言,特别适用于Web开发。7.**Swift:Swift是用于iOS应用开发的编程语言,由Apple推出。8.**Kotlin:Kotlin是一种在Android开发中得到广泛应用的编程语言。9.**Ruby:Ruby是一种灵活...
Django和spring哪个好(django和java)
Flight是一个快速,简单,可扩展的微型PHP框架,允许用户快速的构建RESTfulweb应用,同样易于学习和使用,简单但是很强大! Yii Yii是个高性能的PHP框架,用来开发Web2.0应用程序,Yii拥有很丰富的特性:MVC,DAO/ActiveRecord,I8N/L10N,缓存,身份认证,基于用户角色的访问控制,scaffolding和测试等等。 Medoo Medoo是最轻的PHP数据...
android 平台上的软体开发要是用什么语言?
Kotlin:语言和js很相似,写法很简单,如果你不想从java学起那么可以去学习kotlin,虽然这门语言是google官方主推的语言,但一直无法摒弃java,这也是目前很多公司面试要求精通java语言的原因,如果学习java那肯定也能写后台甚至是javaweb,所以找工作也不单一。 一些第三方js动态库语言——reactnative,这种语言可以开发web/wap...
像美团外卖这样的APP用一种开发语言,能开发得出来吗?
一个APP的开发是需要前端技术和后台技术共同配合完成,这样的APP不论是功能还是性能都给用户很好的体验,单一开发语言毕竟技术支持有限,所以即使能开发出来,APP的用户体验也是不理想的。一般APP有这几种开发组合模式:1、原生安卓iOS开发,前端:JAVA、kotlin、swift、object-c后台:JAVA、PHP、C++等后台...
编程软件哪个比较好用?
这个语言类很多,工具也不同。你要明确你自己需要学习使用的需要。对于我而言,安卓开发,使用Javakotlinc需要。以前用eclipse,sourceinsight。因为eclipse已经明确不支持维护了,主流使用androidstudio。java,python吧,java火了这么久不是没原因的,最近python最近势头也不错,不过感觉一门语言学好就不错了?
好学编程:可用于软件开发项目的 20 种最流行编程语言
11. PHP:PHP 是全球使用最多的编程语言之一,适用于开发Web应用程序。12. Perl:Perl 在系统管理、网络开发等领域得到广泛应用,适用于开发复杂的项目。13. Kotlin:Kotlin 是一种静态类型的编程语言,适用于开发Android应用程序。14. C#:C# 是一种多范式编程语言,适用于开发各种类型的应用程序。15....
每个开发人员都应该知道的16个顶级新计算机编程语言
TypeScript是一个基于 JavaScript 静态类型定义构建,并由微软维护且开源编程语言。Visual Studio Code 或Visual Studio 是推荐的IDE编辑器,微软大厂的用户体验和错误检查也不用怀疑。复合编程语言 Hack Hack是一种作为 PHP 方言的 HipHop 虚拟机的编程语言。于 2014 年由Facebook创建,允许程序员同时使用...
有哪些常见的软件开发语言?
6. PHP:PHP是一种流行的服务器端脚本语言,主要用于Web开发,构建动态网页和应用程序。7. Swift:Swift是Apple开发的一种编程语言,专注于iOS和macOS平台的应用程序开发,以其安全性和高性能而受到青睐。8. Kotlin:Kotlin是一种用于Android开发的现代编程语言,与Java兼容并提供更简洁的语法和额外特性。...
后端开发用什么语言(ios后端开发用什么语言)
安卓软件编程语言-Java为了方便开发谷歌采用了Java语言来开发安卓应用,应用程序框架层API是采用Java语言编写的,方便开发者调用。上层是应用层,就是平时开发者自己开发的应用。这一层谷歌官方支持的编程语言是Java和Kotlin。比如网络游戏程序,需要用到C++语言,用到cocos2D-x游戏引擎,untiy3D游戏引擎,Dx等...