There's more than one way to write the corresponding Ruby snippet. If I had been writing it, I might have translated it something like this:
class BlogPost
class << self
attr_accessor :count
end
self.count = 0
attr_accessor :title, :body
def initialize(title, body)
@title = title
@body = body
@published = false
BlogPost.count += 1
end
def publish!
@published = true
end
def to_s = @title
def count = self.class.count
end
This avoids needing to understand what `@@count` means, and lets you use the same syntax as in python: `BlogPost.count += 1`.Or, if I were in a codebase using static type annotations with Sorbet, I'd do something like this[0]. To each their own, write code in the language and style that makes the most sense to you.
[0] https://sorbet.run/#%23%20typed%3A%20true%0Aclass%20Module%3...