次世代言語26 TypeScript Swift Go Kotlin Nim

■ このスレッドは過去ログ倉庫に格納されています
2022/06/21(火) 09:27:46.30ID:5vOFCGpG
スレタイ(順番はRedMonk準拠)以外の言語もok

※ Rustは現世代最強言語なので除外します

前スレ

次世代言語25 TypeScript Swift Go Kotlin Rust Nim
https://mevius.5ch.net/test/read.cgi/tech/1650185555/
2022/06/21(火) 09:44:18.82ID:GTnizZ2U
文字列の変数sが与えられた時に
変数a(符号付き32bit整数)、
変数b(符号なし64bit整数)、
変数c(64bit浮動小数点数)へそれぞれ変換するコード

【Rust】
let s: &str = "12345";
let a: i32 = s.parse()?;
let b: u64 = s.parse()?;
let c: f64 = s.parse()?;

【Kotlin】
val s: String = "12345"
val a: Int = s.toInt()
val b: ULong = s.toULong()
val c: Double = s.toDouble()

【Swift】
let s: String = "12345"
let a: Int32 = Int32(s)!
let b: Uint64 = Uint64(s)!
let c: Double = Double(s)!

【Go】
var s string = "12345"
var err error
var a int32
a, err = strconv.ParseInt(s, 10, 32)
var b uint64
b, err = strconv.ParseUint(s, 10, 64)
var c float64
c, err = strconv.ParseFloat(s, 64)
3デフォルトの名無しさん
垢版 |
2022/06/21(火) 12:56:04.76ID:/ETIo2hH
オーバーロードが無いと、

例えばライブラリ無いからシステムコール利用する便利ラッパー機能を提供しようとする。例えばソケット関係のAPIをまとめたやつとか。
で socket(2)の場合、
第3引数なんていつも0しか使わないからと第2引数までを取るAPIとして公開、後になって第3引数必要になった(例えばSCTP利用)ってなった場合、オーバーロードできないとAPI変える必要あるじゃん。
2022/06/21(火) 13:12:00.12ID:vSYkmcQ8
>>3
プログラムを書いたことのないキチガイだな
socketの第3引数はgetaddrinfoで得たai_protocolを引き渡すのが常識
あるいはgetaddrinfoを使わないならばgetprotobynameの結果を引き渡すものだ
まともなコードを書けないからそんな意味不明な主張になる
5デフォルトの名無しさん
垢版 |
2022/06/21(火) 13:15:46.21ID:wIb095hs
必要なら変えればいいじゃん
2022/06/21(火) 14:09:10.86ID:l/hCBOZ3
なんでオーバーロードが無いCでうまくやっている例を挙げてオーバーロードの必要性を主張しようと思ったんだろう
2022/06/21(火) 17:22:04.63ID:AK5VMxpO
                     /  ,.----―‐、ヽ. \
       /            /   ヽ      ヽヽ、_ヽ
      /         _,.-‐''"    ヽ      ヽ  `ヽ
    /        _,,.-‐'"        ヽ      ヽ   ヽ
    /      _,.-'"            ヽ      ヽ   ヽ
   /    _,.-‐'"               i!      i! .._ i
  人_,.-‐"         _,,... _;;.::='' \   i!      i!/   >'
 /           _,,..-''_,.-‐''"     入 /_____/  ,.イ'
 | ,.-ヽ、    _,.-'"_,.- ‐┬:.:ァ‐──┬: :ァ= ┬─―-|ヾ  r i!
 |/   ヽ.. ,.-'"  r  |/ ,L:厶\_,   |: / _/二│ / |  .| |
 i     ヽ |   |;   〃  ̄`ヾ    |/  〃 ̄`∨ i   | |ヽ
 i!     ヽ |   .|   {{     }}        {{     }}  {   | | |      また新スレだ!いつもいつも!
 |      i |   |    ゞ' ==彡         ゞ ==彡  l   | | |       1000にも届かないで!!わたしを弄んで!!
 ヽ      | |   |!  ヽヽ             ヽヽ l  | | i!
  ヽ、    |  |   |     /⌒¨¨¨¨¨¨¨¨¨⌒ヽ   /  | i/
   ヽ、   /  ヽ  ヽ、   {           丿  / /,! ,i!
   ヾ`ヽー'   `ヽ、  `ヽ、      ェ-―‐-く  / ./ /
     ``―、_     ` ‐、_  ` ー--/  __ `ヽ/ ./ /
        `゙゙‐-、    ゙`ー、.._/  i'"  `ヽ  /,/
8デフォルトの名無しさん
垢版 |
2022/06/21(火) 18:27:05.65ID:/ETIo2hH
>>4
あくまでも例なのに的外れな回答だな。
fcntlでもいいわ。あれは第2引数によって第3引数の型が変わる。

>>6
うまくいってねーから。
だから閉じる時はcloseなのに開く時はopenじゃなくてsocketって別の名前になってんじゃん。
思考力無さすぎ。
2022/06/21(火) 18:45:23.25ID:cgA+HP5m
例がアカンわそれ
オーバーロードがある言語でもオーバーロードすべき時とメソッドを分けるべき時が当然ある
fcntlなんかはオーバーロードを考えるより先に分割を検討すべきものだから議論がとっちらかる
10デフォルトの名無しさん
垢版 |
2022/06/21(火) 18:55:56.41ID:n99R/Leg
>>9
>例がアカンわそれ
>オーバーロードがある言語でもオーバーロードすべき時とメソッドを分けるべき時が当然ある

当たり前だろ
2022/06/21(火) 18:56:25.10ID:l/hCBOZ3
>>8
いまさらで申し訳ないんですが
s/ライブラリ無いから/ライブラリ内から/
ですか?
2022/06/21(火) 19:00:59.44ID:XqbO80NY
求めてるのはオーバーロードじゃなくてデフォルト引数だね
13デフォルトの名無しさん
垢版 |
2022/06/21(火) 19:02:06.03ID:n99R/Leg
オーバーロードできるからと、いつもオーバーロードするわけではない。
だがオーバーロードが適切な場合はオーバーロードできたほうが良い。
単にそれだけ。
原理主義者になるな。
14デフォルトの名無しさん
垢版 |
2022/06/21(火) 19:15:17.39ID:n99R/Leg
>>11
ライブラリ無いから薄いラッパーを作って提供するんだと思った。
知らんけど。
2022/06/21(火) 19:19:23.26ID:zS+KQ1el
オーバーロードは関数を値として持とうとしたときに関数の実体を取得するのがくそほど面倒臭かった記憶
2022/06/21(火) 19:34:47.92ID:bYqCGEc9
オーバーロードの追加はAPIの変更に含まれますか?
2022/06/21(火) 19:36:24.38ID:l8WwdmAr
ジェネリクス以外でわざわざ同じ関数名使う必然性がないわな。
2022/06/21(火) 19:39:33.13ID:hzkld3Bb
Objective-Cの関数名って長かったよなあ(遠い目)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況