One thing I like about both languages is how nice it is to write tests. The patching and the assertions are great.
One thing I like about both languages is how nice it is to write tests. The patching and the assertions are great.
Crystal lang does a bunch of great thing but the poor support on Windows (having to install some Linux subsystem to compile stuff) is a non starter for many companies.
I personnally never liked Python's syntax, or OOP, it feels tacked on. However Python's ecosystem is just too huge to be ignored.
i.e. if True: a = 1 if True else 0
> Oh and how I miss one line if statements and conditional assignment when I'm in Python.
derac provided an example exercising both. To separate them:
One line if statements:
if predicate: expression
Conditional assignment: a = 1 if predicate else 0
The else is to permit the conditional assignment, it's a ternary operation, it is not for the if statement. launch_nuclear_weapons if at_total_war
Just reads better because it doesn't look like a mistaken if statement.By conditional assignment, I meant more something like this:
some_var ||= 45
And I know I can do either: some_var = some_var or 45
some_var = some_var if some_var else 45
But it just looks stupid and it is such a frequent need due to the way default args work for things like dicts, that it gets annoying.This was changed in 3.0. String literals are now frozen/immutable by default.
There was a plan to do that at some point, but it was pulled back from for backwards compat reasons.
You can opt-in to string literals being frozen by default on a per-source-file basis with a magic pragma comment, and this has existed for several ruby 2.x versions and is unchanged in the released ruby 3.0.