问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用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等...

截图的程序是什么样的 用于做程序的电脑什么样的可以 查封的程序是什么样的 plc程序是什么样的 单片机程序是什么样的 被起诉程序是什么样的 怎么改写蓝牙设备里面的程序 什么样的人适合学程序 怎么改写程序
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我的华硕x54xi2328hr-sl是2月份刚买的,99成新,我保养的很好,又贴了膜... 万豪白金卡是什么? 我想买便宜的好面膜啊,去哪买?网上有好的吗? 北京汽车贴膜去哪比较好?什么膜比较好? 万豪金卡吃饭有什么优惠 傅雷家书是一本关于什么的书?说说你读完此书的一些看法 《傅雷家书》的主题思想是什么 菠萝泡芙是菠萝做的嘛 贝克大叔产品目录 如何制作奶香四溢的泡芙? kotlin 判断是不是array 薇娅一天的收入是多少? 网络直播收入真的有那么高吗? 现在都网上直播带货,收入能有多少呢? 大多数主播月收入3000到5000元之间,为何还有那么... 游戏主播收入一般有多少?为什么那么多人想做游戏... 在直播带货届,哪些网红的收入惊人? 现在做直播,主播一个月刚开始多的能赚多少钱?少... 大多数主播月收入三千至五千,主播收入的来源是什么? 那些网络上的游戏主播,一天能收入多少钱? 一晚或收入6到8亿,主播行业究竟有多挣钱? 做主播的真实收入是多少? 一个普通网络主播月收入多少? 报告称大多数主播月收入3000至5000元,主播赚的钱... 做网络主播一个月收入多少 大部分主播的真实收入是多少? 直播是怎么赚钱的? “主播真实收入曝光,刺痛上亿人”,以为钱好赚是不... 什么是表示媒体?什么是感觉媒体?显示媒体? 麻烦大家解释下 然后举点实例 复制的不要来 谢谢大家 武装押运员能转成特警吗? Android Studio里面编写Kotlin代码的时候,怎么设... java中如何判断一个字符串不是像“aaaaaa”、“88888”... java系统怎么做性能测试调优?是不是掌握了jvm就差... 在python和java之间选哪个 如何利涂鸦的门锁与涂鸦的网关控制室内灯光 怎么样... 计算机专业的学业该如何规划? kotlin中判断装箱后的Int值是不是相等 kotlin语言是在java的基础上进行二次封装吗 在kotlin中怎么用~间隔输出数组 kotlin 怎么在代码中隐藏view 求学校运动会口号(五一班)十六字 一定要押韵 运动会口号五年级一班 五一班运动会口号坚定 我们班是五一班,我们快开运动会了,求口号(不要... 初中学生关于运动会的口号 无线通讯五一运动会口号 运动会口号 我是五年级一班的 我是五一班的,我们要开一场运动会,开幕式,闭幕... 求运动会口号,要有文学色彩,要押韵,绝对原创,... 五年级一班运动会口号