Kotlin - 초보 인식
기본 문법
문장
// data ,
data?.let{
//...
}
// , data
data?:let{
//...
}
함수.
say()
라는 함수를 만들고 String 형식의 매개 변수를 받아들이고 String 형식의 값을 되돌려줍니다 fun say(str: String): String {
return str
}
fun say(str: String): String = str
fun getIntValue(value: Int) = value
// Java ,
public boolean hasEmpty(String... strArray){
for (String str : strArray){
if ("".equals(str) || str == null)
return true;
}
return false;
}
// Kotlin , vararg
fun hasEmpty(vararg strArray: String?): Boolean{
for (str in strArray){
if ("".equals(str) || str == null)
return true
}
return false
}
Kotlin 코드
class StringUtils {
companion object {
fun isEmpty(str: String): Boolean {
return "" == str
}
}
}
compnion object
는 외부 클래스의 반생 대상을 나타내며 외부 클래스가 자동으로 하나의 대상을 자신의field로 만드는 것으로 이해할 수 있다.Kotlin은 기본적으로 모든 패키지 레벨 함수를 자동으로 생성된 EcampleKt라는 클래스에 저장합니다
Kotlin에
static
키워드가 없습니다. 자바 코드에서 클래스 이름으로 Kotlin 클래스를 호출하려면 @JvmStatic 주석을 넣어야 합니다.클래스 특성
구조 함수
class Person(private var name: String) {
init {
name = "Zhang Tao"
}
internal fun sayHello() {
println("hello $name")
}
}
2차 구조 함수
class Person(private var name: String) {
private var description: String? = null
init {
name = "Zhang Tao"
}
constructor(name: String, description: String) : this(name) {
this.description = description
}
internal fun sayHello() {
println("hello $name")
}
}
수식부
데이터 클래스: 데이터 수식의 클래스를 데이터 클래스라고 부른다
단일 클래스 설계
class Single private constructor() {
companion object {
fun get():Single{
return Holder.instance
}
}
private object Holder {
val instance = Single()
}
}
동적 에이전트
interface Animal{
fun bark()
}
class Dog :Animal {
override fun bark() {
println("Wang Wang")
}
}
class Cat(animal: Animal) : Animal by animal {
}
fun main(args: Array) {
Cat(Dog()).bark()
}
함수와 패킷 닫기
Unit
공함수: 그 방법을 실현할 필요가 없다.하나의 값을 나타내는 유형과 같다.Java의 void 유형과 유사editText.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) = Unit
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) = Unit
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) = Unit
})
public class Nothing private constructor()
복잡한 함수
fun main(args: Array<String>) {
for (i in 1..100 step 20) {
print("$i ")
}
}
위의 코드는 실제...의 원리는 실제적으로 하나의 Int 값에 대해 그의 rangeTo 방법을 호출하여 하나의 Int 파라미터를 전달하고 구간 대상을 되돌려주는 것이다.
for (i in 1.rangeTo(100) step 20) {
print("$i ")
}
가방을 닫다
{ x: Int, y: Int ->
println("${x + y}")
}(1, 3)
Lambda
Kotlin에서 Lambda를 하나의 유형으로 추상화
val printMsg = { msg: String ->
println(msg)
}
fun main(args: Array<String>) {
printMsg.invoke("hello")
}
//fun main(args: Array) {
// printMsg("hello")
//}
먼저
printMsg
라는 Lambda를 설명했습니다. 스트링 형식의 값을 매개 변수로 받아들인 다음main 함수에서 호출합니다. 생략하려면 호출할 때 invoke를 생략해서 함수처럼 사용할 수 있습니다.fun main(args: Array<String>) {
log("world", printMsg)
}
val printMsg = { str: String ->
println(str)
}
val log = { str: String, printLog: (String) -> Unit ->
printLog(str)
}
// log , str:String, printLog: (String) -> Unit。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 학습 기록 - Handler를 사용하여 스레드에서 데이터 전달시간이 촉박한 데다가 나도 약간의 의혹이 있어서 코드만 넣었다.MainActivity.class ThreadTest.class...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.