В данном примере мы исходим из того, что наши классы If и GreaterThan immutable by design и решают только одну задачу.
Реализация этого на ruby могла бы выглядеть примерно так:
class GreaterThan
def initialize(a, b)
@a = a
@b = b
end
def call
@a > @b ? @a : @b
end
end
class If
def initialize(condition, a, b)
@condition = condition
@a = a
@b = b
end
def call
@condition.call ? @a : @b
end
end
a = 1
b = 2
chain = If.new(GreaterThan.new(a, b), a, b)
chain.call # => 1
Ок, мы устали писать new, ведь наши классы все равно решают только одну задачу:
class GreaterThan
def self.call(a, b)
a > b ? a : b
end
end
class If
def self.call(condition, a, b)
condition ? a : b
end
end
a = 1
b = 2
If.(GreaterThan.(a, b), a, b) # => 1
В чем кардинальные отличия этого подхода от FP?
def _if(condition, a, b)
condition ? a : b
end
def greater_than(a, b)
a > b ? a : b
end
a = 1
b = 2
_if(greater_than(a, b), a, b) # => 1
В данном примере мы исходим из того, что наши классы If и GreaterThan immutable by design и решают только одну задачу.
Реализация этого на
ruby
могла бы выглядеть примерно так:Ок, мы устали писать new, ведь наши классы все равно решают только одну задачу:
В чем кардинальные отличия этого подхода от FP?