LoginSignup
4
5

More than 5 years have passed since last update.

swift Kotlin 変換私メモ

Last updated at Posted at 2018-08-14

Kotlin書いてAndroidも出来たらなーと思って勉強しているのですが、すぐ忘れそうなので自分が使いそうなものをここにちょこちょ書きました。

ちなみに私はkotlinなら『はじめてのAndroidプログラミング 第3版 』がおすすめです!
とても親切に書かれています!!

swiftなら『詳細! Swift 3 iPhoneアプリ開発 入門ノート Swift3 + Xcode 8対応』がおすすめです!というか大重 美幸さんの本がおすすめです。

昔は難しそうな本とか、タイトルにつられて買って沢山失敗したけど、最近はそんなに失敗していないと思っています。(⇦本が悪いのではなく、自分の知識にあったものを買えていなかった。)

今では少しみて自分でもわかりやすそうな本を探しています!!(自分の知識で読み進めていけそうなもの)

では早速今回内容へ

何かおかしいとこ指摘していただけると助かります(。・ω・。)
もっと簡単にかけるよとか…。もっとこうした方がセキュリティ的にはイイと思うよとか。
指摘は優しくしていただけると嬉しいです。:hatching_chick:

書き方としては、

#1.適当なタイトル

参考url

swift例

kotlin例

で行こうと思います。
よろしくお願いします。

ちなみに詳しく見たい方はgithubのcommitで見ていただければと思います。
消して、書いての方法なのでcloneでなくcommitで。
swift → https://github.com/sachiko-kame/sampleSmallbySwift
Kotlin → https://github.com/sachiko-kame/sampleSmallbyKotlin

1.enum

参考url
http://kotlinlang.org/docs/reference/enum-classes.html
https://kotlinlang.org/docs/reference/control-flow.html

swift

let animals:Array<aString> = [.dog, .cat, .turtle]

for one in animals{
    switch one {
    case .dog:
        print("犬か")
    case .cat:
        print("猫か")
    default:
        print("亀かもしれない")
    }
}

enum aString:String{
    case dog = "犬"
    case cat = "猫"
    case turtle = "かめ"
}

kotlin


val animals = arrayListOf(aString.dog, aString.cat, aString.turtle)

for (one in animals){
    when (one) {
        aString.dog -> println("犬か")
        aString.cat -> println("猫か")
        else -> {
            println("亀かもしれない")
        }
    }
}

enum class aString(val text: String){
    dog("犬"),
    cat("猫"),
    turtle("かめ")
}


2.extension

参考url
https://kotlinlang.org/docs/reference/extensions.html
https://qiita.com/opengl-8080/items/a7cdd746131337e7c9a6

swift

let sampleText:String = "もしもし"

sampleText.text()

extension String{
    func text(){
        print("自分のテキストは\(self)")
    }
}

kotlin

val sampleText:String = "もしもし"

sampleText.text()

fun String.text() {
    println("自分のテキストは$this")
}

3.String→Int

参考url
https://kotlinlang.org/docs/reference/basic-types.html

swift

let numText:String = "100"
print(Int(numText)!)

kotlin

val numText:String = "100"
println(numText.toInt())

4.配列数カウント

swift

let numArray = [1, 2, 3, 4, 5]
print(numArray.count)

kotlin

val numArray = arrayListOf(1, 2, 3, 4, 5)
println(numArray.size)

5.クラスの作成

参考url
https://kotlinlang.org/docs/reference/classes.html
継承系ものってます。Interface(swiftのprotocle的なのも)

swift

let nameClass = NameClass(name: "カモメ")

nameClass.NameText()

class NameClass{
    var name: String = ""

    init(name:String) {
        self.name = name
    }

    func NameText(){
        print(self.name)
    }
}

kotlin

val nameClass = NameClass("カモメ")

nameClass.NameText()

class NameClass(name: String) {
    var name: String = ""

    init {
        this.name = name
    }

    fun NameText(){
        println(this.name)
    }
}

コメント:Androidが勝手にクラスに渡す変数名入れてくれるからswiftのラベルなくす _で書くか迷いました。

6.getとset

参考url
swift→https://kotlinlang.org/docs/reference/properties.html
Kotlin→https://docs.swift.org/swift-book/LanguageGuide/Properties.html

swift

var sampleSring:String{
    get{
        return ""
    }
    set(text){
        print("あてはめました!\(text)")
    }
}

print(sampleSring)
sampleSring = "カメ吉です"
print(sampleSring)

kotlin

var sampleString: String
    get() = this.toString()
    set(value) {
        println("あてはめました!$value")
    }

println(sampleString)
sampleString = "カメ吉です"
println(sampleString)

コメント:使っている場所は気にしないでください。

7.Interface

参考url
https://kotlinlang.org/docs/reference/interfaces.html

swift

protocol MyInterface {
    func bar()
    func foo()
}

class Child: MyInterface {
    func bar() {
        print("バー")
    }

    func foo() {
        print("ふー")
    }
}

kotlin

interface MyInterface {
    fun bar()
    fun foo()
}


class Child : MyInterface {
    override fun bar() {
       println("バー")
    }
    override fun foo(){
        println("ふー")
    }
}

8.辞書

参考url
https://kotlinlang.org/docs/reference/collections.html
https://kotlinlang.org/docs/reference/multi-declarations.html

swift

let readWriteMap = ["foo":1, "bar":2]
print(readWriteMap["foo"])

for (key, value) in readWriteMap {
    print("\(key)\(value)")
}

kotlin

val readWriteMap = hashMapOf("foo" to 1, "bar" to 2)
println(readWriteMap["foo"])

for ((key, value) in readWriteMap) {
    println("$key と $value")
}

コメント:結果は同じですがswiftの場合値がnilだとreadWriteMap["foo"]の部分でクラッシュするためnilの場合の??または絶対大丈夫!宣言surukanil許容でラップするかの警告が出るので好きなものを選んでください。

9.Arrayからのforからのログ出力

swift

let items:[String] = ["もしもし", "こんにちは"]

for item in items {
    print(item)
 }

kotlin

val items: Array<String> = arrayOf("もしもし", "こんにちは")

for (item in items) {
    println(item)
}

??これはこれでイイのか悩ましていること

参考url:https://kotlinlang.org/docs/reference/data-classes.html
- swiftのstructはkotlinのdata class で代用すべき?

まだかけるところまで行っていない

参考url:https://kotlinlang.org/docs/reference/delegation.html
kotlinのdelegation(swiftのdelegate)
swiftの参考は書いてみました

protocol sampleprotocol {
    func aaa()
}

class sample{
    var delegate:sampleprotocol? = nil

    func a(){
        delegate?.aaa()
    }
}

class BaseClass:sampleprotocol{

    var Sample = sample()

    init(){
        Sample.delegate = self
    }

    func aaa() {
        print("aの時logを出します")
    }
}
4
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5