varargとArray<>の引数

関数の引数にvarargを使用した場合とArray<>を使用した場合とでは、JVMシグネチャが同じになるようだ。

例えば以下のように同じ関数名で、引数がvararg args:Stringのものと、args:Arrayを定義してビルドすると、

fun hogehoge(args:Array<String>){
    print("ほげほげA")
}

fun hogehoge(vararg args:String){
    print("ほげほげB")
}

このようにエラーになる。

エラー:(8, 1) Kotlin: Platform declaration clash: The following declarations have the same JVM signature (hogehoge([Ljava/lang/String;)V):
    fun hogehoge(args: Array<String>): Unit defined in marutk in file Main.kt
    fun hogehoge(vararg args: String): Unit defined in marutk in file Main.kt

Kotlinのエントリーポイント

Kotlinのプログラムはmain関数がエントリーポイントになる。

main関数は引数無しでも、引数ありでもOK。

  • 引数無しの場合
fun main() {
    println("Hello world!")
}
  • 引数ありの場合
fun main(args:Array<String>) {
    println("Hello world!")
}

または

fun main(vararg args:String) {
    println("Hello world!")
}

ちなみに、引数無しのmain関数はKotlin 1.3で導入された。 https://kotlinlang.org/docs/reference/whatsnew13.html#parameterless-main

gitでブランチきってマージするまで

時々ど忘れしてしまうので、自分用にメモ。

> git branch 
* develop
  master
> git checkout -b feature/specHoge
Switched to a new branch 'feature/specHoge'

# なんやかんや

> git checkout develop
Switched to branch 'develop'
> git merge feature/specHoge --no-ff
Merge made by the 'recursive' strategy.
 hoge.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 hoge.txt
  • ポイント

マージするとき--no-ffを忘れない

git の差分比較をWinMergeで表示する

.gitconfig に以下を記述する。

[diff]
tool = WinMerge
[difftool "WinMerge"]
path = C:/Program Files/WinMerge/WinMergeU.exe
cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" -f \"*.*\" -e -u -r \"$LOCAL\" \"$REMOTE\"
[alias]
windiff = difftool -y -d -t WinMerge 

使い方

  • 2世代前のコミット後の内容と現在を比較
 git windiff HEAD~~
  • トピックブランチ feature/remark と現在のブランチの内容を比較
git windiff feature/remark
  • ひとつ前のコミット後とリモートリポジトリ origin/masterの内容を比較
git windiff HEAD~ origin/master

参考

git の差分比較・マージを WinMerge で行う - Qiita