Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
定义更新ruby对象属性的方法_Ruby - Fatal编程技术网

定义更新ruby对象属性的方法

定义更新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后,只需

嘿,我在使用ruby解决以下问题时遇到了麻烦

问题

编写一个函数,为抽象文件系统提供更改目录(cd)功能。

注意事项:

根路径为“/”

路径分隔符为“/”

父目录可寻址为“..”

目录名仅由英文字母(A-Z和A-Z)组成

例如:

path=path.new(“/a/b/c/d”)

将path.cd('../x')放入当前路径

应显示“/a/b/c/x”

注意:不要使用内置的路径相关函数

我的答案


但是,这会从'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