React Native - React 基础知识

JSX JSX是 JavaScript 的一个扩展。可以很好的描述UI应该呈现出它应有交互的本质形式。 JSX的基本语法规则:遇到HTML标签(以<开头),就用HTML规则解析,遇到代码块(以{)开头,就用JavaScript规则解析。 注意 在JSX中,可以在{}中放置任何有效的JavaScript表达式, 凡是使用到JSX的地方,都要加上 type=”text/babel”,例如 <script type="text/bab...

阅读更多

Kotlin核心编程 - 多态和扩展

多态类型 子类型多态: 一个子类继承一个父类情况 参数多态: 泛型就是最常见的形式 特设多态:可以理解为一个多态函数是有多个不同的实现,依赖于实参而调用相应版本的函数。是一种更加灵活的多态技术,在kotlin中,一些有趣的语言特性,如运算符重载,扩展都很好的支持这种多态。 运算符重载 operator关键字。将一个函数编辑为重载一个操作符或者实现一个约定 如下代码,Area 就具有了plus的能力 data class Area(val va...

阅读更多

Kotlin核心编程 - lambda 和集合

kotlin运行对java的类库做一些优化,任何函数接收了一个java的SAM(单一抽象方法)都可以用kotlin的函数进行替代。 with 和 apply 最大的作用就是可以让我们在写lambda的时候,省略需要多次书写的对象。默认用this关键字来指向它 with 是一个 内联函数 public inline fun <T, R> with(receiver: T, block: T.() -> R): R { contrac...

阅读更多

Kotlin核心编程 - 类型系统

null 引用 null是一个不是值的值 null 存在歧义,因为可能包含多个含义 该值从未初始化过 该值不合法 该值不需要 该值不存在 NullPointerException 对于java,编译时检查存在一个致命的缺陷-由于任何引用都可以为null,而调用一个为null的对象的方法,就会产生NPE(NullPointerException) java 解决NPE问题的方案 函数内对于无效值,更倾向于抛出异常处理, 对于经常出现无...

阅读更多

Kotlin核心编程 - 面向对象

类和构造方法 kotlin中类声明与java不同之处 不可变属性成员。kotlin支持用val 在类中声明引用不可变的属性成员,使用var 声明的属性则引用可变属性成员 属性默认值。在kotlin中,除非显示声明延迟初始化,否则就需要制定属性的默认值 不同的可访问修饰符。kotlin类中成员默认都是全局可见的。而java中默认可见域是包作用域。 class Brid { val weight: Double = 500.0 va...

阅读更多

Kotlin核心编程 - 基础语法

类型声明 如果一个函数没有声明返回值的类型,函数会默认被当成返回Unit类型 fun sum(x: Int, y: Int, z: Int) { return x + y + z} 报错,因为默认是Unit ,却return Int类型 Kotlin支持这种单行表达式与等号的语法来定义函数,叫做表达式函数体 。普通的函数声明则可叫做代码块函数体 判断是否需要显示声明类型 如果它是一个函数的参数。必须使用 ...

阅读更多

扫盲系列 - Android 主题

背景 今天从一个项目中搬运Seekbar组件的时候,发现了一个很奇怪的问题 Seekbar 滑动的位置没有紧靠滑道,这个倒是挺奇怪,真正的效果应该是下面这种 代码我是CV大法弄出来的,不会出错啊,可是为啥出现这个效果呢?想不通 刚开始我怀疑是和编译版本有关,可是当我把编译版本改称一样的后,发现还有这个问题,那是什么原因呢?然后怀疑和主题有关,发现果然不一样,正常效果的是 Theme.AppCompat.Light.NoActionBar,而不正常效果...

阅读更多

扫盲系列 - 从一段代码理解高阶函数和扩展函数和内联函数

kotlin 也学了一点点,算是入门了,然后想着写点实际的项目吧。可是想要写好网络请求,却不知道怎么下手了,就在网上抄了一段代码,虽然能正常运行,可是却看得我傻眼了。 首先看这段代码 傻眼一 object NetworkManager { private val httpApi = ApiRetrofit.getHttpApi() suspend fun getVehicleInfo(page: String): BaseResponse<...

阅读更多