Re:I made a Phoenix webapp as a veteran Rails dev
by hartator on Sunday May 21, 2017 @04:06PM
(#14388980)
yeah and in Ruby, you can do:
class Array
def square
map {|e| e * e}
end
end
Why storing code in a seperate module is a superior way than storing code in its class?
Re:I made a Phoenix webapp as a veteran Rails dev
by grzm on Sunday May 21, 2017 @04:19PM
(#14389043)
You've now altered a global object which other code may rely on. Indeed, you may overwrite someone else's Array#square method (or have yours overwritten). As a separate module, the additional code is logically distinct. You can find many discussions about monkey-patching elsewhere. It's not my intent here to argue one way or the other, just to answer your question as to why one may choose package the code as a separate module.
Re:I made a Phoenix webapp as a veteran Rails dev
by tsukaisute on Sunday May 21, 2017 @04:26PM
(#14389090)
If it is to be reused by other modules, or if it is complex (and likely itself needs to be split up into smaller functions)
Think of:
items = ["file_a", "file_b", "file_c"]
Enum.map items, &HelpfulDownloaderModule.download/1
download/1 is probably pretty complex and/or can be of use in other pieces of code.
Short syntax:
Long syntax: Or even: Defining a function separately (e.g. even in another module) and referencing it: