4 ms·
Wait, what happens if you want keyword arguments?
by jrochkind1 10mo ago
Wait, what happens if you want keyword arguments?
- t-writescode 10mo agokeyword arguments are, internally, syntactic sugar over a hash. It probably doesn't easily work with typing the explicit values of a raw hash
- anamexis 10mo agoThis hasn’t been true since Ruby 3.0. Keyword arguments are a core language feature with their own semantics.
- t-writescode 10mo agoOh huh, TIL. Thanks for sharing!
- Dan42 10mo agoYeah, it doesn't work with keyword arguments. In the playground I tried a simple keyword with default value, and it converted to the wrong thing, as if "someone" was a valid type. def greet(name: "someone"): String "Hello, #{name}!" end
- ximus 10mo agoThe obvious thing that comes to mind when looking at their spotlight example. However, no mention of this basic head scratcher in the docs. :rolling_eyes:
- anamexis 10mo agoIt would seem that in T-Ruby all arguments are keyword arguments, although they don’t really spell this out. https://type-ruby.github.io/docs/learn/functions/optional-rest-parameters#keyword-arguments https://type-ruby.github.io/docs/learn/functions/optional-re...
- nitza 10mo agoTheir docs say that something like: `def greet(name: String, greeting: String = "Hello"): String` will work for kwargs with default values — https://type-ruby.github.io/docs/getting-started/understanding-trb-files#optional-parameters https://type-ruby.github.io/docs/getting-started/understandi...
- Lio 10mo agoI think they've missed a trick there, they could have used `|` like low-type does. e.g. def greet(name: String | "Hello"): String I know it's all subjective but I think that reads better and it's valid ruby. To be honest low-type with a static analysis tool would be my favourite syntax for this. https://github.com/low-rb/low_type https://github.com/low-rb/low_type
- jrochkind1 10mo agoThat example is for positional args with default values, according to the example usage: `greet("Alice")`. Can't find ruby-style keyword args example, with or without default values. maybe no kw args in t-ruby? Or wait, found examples that claims to be keyword arguments, but you define them just the same? I'm confused. https://type-ruby.github.io/docs/learn/functions/optional-rest-parameters/#keyword-arguments https://type-ruby.github.io/docs/learn/functions/optional-re...