定义更新ruby对象属性的方法
嘿,我在使用ruby解决以下问题时遇到了麻烦 问题 编写一个函数,为抽象文件系统提供更改目录(cd)功能。 注意事项: 根路径为“/” 路径分隔符为“/” 父目录可寻址为“..” 目录名仅由英文字母(A-Z和A-Z)组成 例如: path=path.new(“/a/b/c/d”) 将path.cd('../x')放入当前路径 应显示“/a/b/c/x” 注意:不要使用内置的路径相关函数 我的答案定义更新ruby对象属性的方法,ruby,Ruby,嘿,我在使用ruby解决以下问题时遇到了麻烦 问题 编写一个函数,为抽象文件系统提供更改目录(cd)功能。 注意事项: 根路径为“/” 路径分隔符为“/” 父目录可寻址为“..” 目录名仅由英文字母(A-Z和A-Z)组成 例如: path=path.new(“/a/b/c/d”) 将path.cd('../x')放入当前路径 应显示“/a/b/c/x” 注意:不要使用内置的路径相关函数 我的答案 但是,这会从'path'变量返回字符串而不是对象。在对象中更改@current\u path后,只需
但是,这会从'path'变量返回字符串而不是对象。在对象中更改
@current\u path
后,只需返回对象('self')
在对象中更改当前路径后,只需返回对象('self')
您需要创建一个链方法。有两种方法可以解决这个问题 不可变的一个-只需创建类的新实例而不是修改,例如
返回路径.new(计算路径)
可变的一个-修改
@current_path
并在方法的末尾返回self
,cd您需要创建一个链方法。有两种方法可以解决这个问题
不可变的一个-只需创建类的新实例而不是修改,例如返回路径.new(计算路径)
可变的一个-修改
@current_path
并在方法#cd
的末尾返回self
,谢谢您的回答,非常感谢!谢谢你的回答,非常感谢!谢谢你的回答,非常感谢!谢谢你的回答,非常感谢!
class Path
def initialize(path)
@current_path = path
end
def current_path
@current_path
end
def cd(new_path)
if new_path.include? ".."
z = new_path.split("/")
b = @current_path
a = b.split('/')
a.shift
a.pop
@current_path = a.push(z[z.length-1]).join("/")
else
end
end
end
path = Path.new('/a/b/c/d')
path = path.cd('../x')
@current_path = a.push(z[z.length-1]).join("/")
return self