当前位置: 首页 > news >正文

百度网站推广优化工具/东莞整站优化排名

百度网站推广优化工具,东莞整站优化排名,wordpress 更改注册页面,企业商务网站优化2019独角兽企业重金招聘Python工程师标准>>> Why is Kotlin?图: 现在新的编程语言太多啦,像Google的go语言,中国人开发的易语言,还有rust语言等,学习起来很难,跟不上节奏,当然掌握最…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png


Why is Kotlin?图:



   现在新的编程语言太多啦,像Google的go语言,中国人开发的易语言,还有rust语言等,学习起来很难,跟不上节奏,当然掌握最基本的编程语言是必要的,如C语言,PHP,Java,c#仍是最重要的。

   先介绍下kotlin如何开发Android项目

   Kotlin,原意是在俄罗斯的一个 小岛 ,JetBrain在2011年推出了以这个来命名的一个运行在JVM上的语言, 看上去有点类似C#和Scala的结合,并且同为静态类型,作为一门JVM上的语言,可以轻松兼容Java,并且整个语言设计的非常轻量。

   

基本语法介绍

Kotlin的语法非常简洁,熟悉Java或者Scala的人都可以快速上手:

函数声明:

fun foo(va: Int): Int {return 1
}

也可以单行声明:

fun foo(va: Int): Int = 1

lambda当然也是支持的:

var c = {foo: Int -> println(foo)}

Kotlin中的函数是一等对象,自然支持高阶函数:

?
1
2
3
var c = {foo: Int -> println(foo)}
fun fooTest(func: (Int)->()) = println("I'm Groot")   
fooTest(c)

类与接口

类可以这样进行声明:

?

Bar类在这里继承了Foo类,Bar类有两个构造函数,直接在Bar类头的是primary constructor,另外一个构造函数使用constructor关键字定义,注意必须要先调用primary constructor,另外,init标明的是class initializer,每个构造函数都会首先调用class initializer里面的代码,再调用构造函数

Inner class:

?
1
2
3
<span>class</span> <span>Outer</span> { <span>class</span> <span>Inner</span> {     
}
}

Kotlin同样支持嵌套的内部类,不过和Java不一样的是,Kotlin的内部类不会默认包含一个指向外部类对象的引用,也就是说,Kotlin中所有的内部类默认就是 静态 的,这样可以减少很多内存泄露的问题。另外,如果需要在内部类中引用外部类对象,可以在Inner类的声明前加上inner关键字,然后在Inner类中使用标记的this:this@Outer来指向外部类对象

Singleton:

object Single {var c = 1fun foo() = println("foo")
}

Kotlin中使用object关键字声明一个singleton对象,后面这里的方法就可以直接使用Single.foo()来调用了

Interface:

interface Interface {fun foo() {println(1)}fun bar()
}

Kotlin中的interface,跟其他语言的trait非常像,而且也可以带有默认的实现方法,并且不允许通过属性来维护状态。事实上,在上个版本中,interface的原来名称是trait,而在M12现在这个版本中又改成了interface而已

Null safe and Smart type cast

Null safe:

在Kotlin中,严格区分了nullable和非nullable对象,甚至在编译期解决了不少潜在的空指针问题:

我们先来看下普通的变量声明

var c: String = "12123"

这里声明了一个String对象,其值为"12123",我们可以正常的使用这个对象的成员方法:c.length()

但是,如果在初始化的时候,变量c为空的话,这样声明就是错误的,会编译不过:

var c: String = null

正确的声明应该是这样:

var c: String? = null

这里在String后面加多了一个问号,表明这里是一个 Nullable 的对象,说明这个变量在使用的过程中 可能为空 ,而且,在调用这个变量的成员的时候,必须要使用这种语法:c?.length(),在调用的时候添加了一个问号,表明,如果c为空的时候,length()这个方法就不会调用。coffe-script也有类似的,这种语法糖减少了很多平时用到的Null-checked,简化了代码,而且从编译器开始介入null-checked,大大减少了潜在的NullPointerException,而事实上,null的确也是一个billion dollar mistake

常年进行如此的调用语法常常会很恼人,因此在你进行显式的Null-checked的时候,Kotlin的编译器会认为后续的调用已经无需进行Null-checked,可以直接调用了:

if (c != null) {c.length()
}

Smart type cast

在Kotlin中,进行强制类型转换可以使用as关键字,但有可能会抛出异常,因此,Kotlin引入了smart type cast:

if (c is String) {c.length()
}

在上面的例子中,如果c是一个String对象,则在if块中,可以直接使用String的方法,编译器会智能的帮你识别出c在if-blcok里面是一个String对象

Pattern Matching

Kotlin在一定程度上支持了一些FP的特性,包括强大的Pattern Matching,在Kotlin中可以使用when关键字:

1
2
3
4
5
6
7
8
9
10
11
var x = 3
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
in 1..10 -> print("x is in the range")
!in 10..20 -> print("x is outside the range")
is Int -> println("is int")
else-> { // Note the block
print("x is neither 1 nor 2")
}
}

Function Extension

在Java中我们经常需要给系统的类添加一些实用的方法,但苦于不能直接扩展,于是就有了各种的xxxUtils类,导致代码非常恶心,但是在Kotlin中,我们可以直接扩展库里面类的方法,通过function extension:

fun String.fucker() {println("a fucker")
}

上面给String类添加了一个fucker方法,我们可以直接使用:

"123123".fucker()

这大大的减少了我们写xxxUtils类的必要性

回到顶部

配置使用Kotlin进行Android开发

使用Kotlin开发Android app的配置非常简单,按照 官方给出的配置即可 ,直接在Gradle的配置文件build.gradle中添加一个依赖:

?
1
<span>compile "org.jetbrains.kotlin:kotlin-stdlib:</span><span>$</span><span>kotlin_version</span><span>"</span>

然后添加Kotlin插件的使用:

apply plugin: 'kotlin-android'

进行一次Gradle Sync之后,就可以直接在项目使用Kotlin编写代码了,另外,如果安装了Intellij的Kotlin插件,可以选择Tools->Kotlin->Configure Kotlin in Project,就可以自动进行上述的配置,一步到位

我写了一个简单的Demo app放到了Github上,有兴趣可以看下使用Kotlin开发android app具体是怎样的: Demo地址

回到顶部

对于dex方法数目的影响

dex有个65535方法数的限制,这对Android开发造成了很大的影响,在使用Kotlin进行android app开发的时候,需要将Kotlin的标准库打包进入apk中,这意味着如果标准库过大,对分包会造成很大的限制(因为这必须得打包在主dex中),所幸的是,Kotlin的哲学是“Java中有的,就尽量复用,不再自行创造一套”,使得整个Kotlin的标准库非常小,我们可以简单将Kotlin的标准库和其他比较常用库进行一下对比:

包名 android-support-v13.jar android-support-v4.jar android-support-v7-appcompat.jar guava-18.0.jar scala-library-2.12.0-M1.jar kotlin-stdlib-0.12.213.jar
方法数 8219 8118 4624 14833 51248 7228

可以看出来Kotlin的标准库相当小,只有7000多个方法,比support-v13和support-v4还小,这体现了Kotlin的设计哲学之一:"100% interoperable with Java",基本上Java已经有的,Kotlin会尽量复用。而对比来看,同样是JVM上的语言,我们也可以选择使用Scala来进行Android开发,但Scala标准库有5万多个方法,全部打包进主dex中,很容易就导致app爆主dex了。所以综合来看,轻量形的Kotlin还是相当适合进行Android开发的。

回到顶部

Project Anko

Anko 是JetBrains推出的一个简化Android开发的库,同样由Kotlin来编写,主要的革命在于,声明UI的方式,完全抛弃了xml的使用,使用Anko,声明UI是这样做的:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val customStyle = { v: Any ->
when (v) {
is Button -> v.textSize = 26f
is EditText -> v.textSize = 24f
}
}
verticalLayout {
padding = dip(34)
imageView(android.R.drawable.ic_menu_manage).layoutParams {
margin = dip(16)
gravity = Gravity.CENTER
}
val name = editText {
hintResource = R.string.name
}
val password = editText {
hintResource = R.string.password
inputType = TYPE_CLASS_TEXT or TYPE_TEXT_VARIATION_PASSWORD
}
button("Log in") {
onClick {
tryLogin(name.text, password.text)
}
}
}.style(customStyle)
}
代码编写完毕。

当然使用启动Android studio也可以安装kotlin插件来开发Android项目。如:图



使用kotlin开发Android项目


end


转载于:https://my.oschina.net/bigfool007139/blog/541292

http://www.jmfq.cn/news/5230945.html

相关文章:

  • 用建站ABC做的网站 怎么营销/私人做网站建设
  • 定制化开发/aso优化什么意思
  • 电子商务网站开发环境/广州seo运营
  • 法拍房北京网站/关键词挖掘ppt
  • 手机可做兼职的网站/青岛网站seo
  • 网站建设服务描述/一键优化是什么意思
  • 网站建设分为多少模块/微信信息流广告投放
  • 临沂网站建设兼职/百度com打开
  • 济南学习网站制作/宁波核心关键词seo收费
  • 网站开发技术主管工作职责/我想做地推怎么找渠道
  • 自己做物流网站/长沙网站托管优化
  • 公司简历模板范文填写/seo关键词排名优化软件
  • 北京网站优化和推广/成都搜索优化排名公司
  • 做爰全过程免费网站的视频教程/品牌策划案
  • 重庆城市建设集团官方网站/引流软件有哪些
  • 不属于常用网站建设的是/老铁外链
  • 深圳宝安网站建设/网络营销是做什么
  • 深圳市住房和建设局工程交易网/seo推广的方法
  • 提高审美的网站推荐/长沙百度网站推广
  • 网上创建公司/上海网站seo外包
  • 网站建设顶呱呱/电工培训机构
  • 卖狗人怎么做网站/seo网址超级外链工具
  • 移动门户网站建设特点/北京网站制作
  • 东营做网站tt0546/seo标题优化是什么意思
  • 彩票类网站是如何做代理的/seo监控
  • 虎门镇做网站/百度 人工客服
  • 绿色家园网站怎么做/cps广告是什么意思
  • 合肥学校网站建设/seo二级目录
  • wd怎样建设一个网站/我想接app纯注册推广单
  • 凡科做网站真的免费吗/9个广州seo推广神技