Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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
Python RubyonRails:依赖项和节点_Python_Ruby On Rails_Dependencies_Nodes - Fatal编程技术网

Python RubyonRails:依赖项和节点

Python RubyonRails:依赖项和节点,python,ruby-on-rails,dependencies,nodes,Python,Ruby On Rails,Dependencies,Nodes,我有一个简单的问题需要解决。我有一些代码,可以根据其他任务对任务进行排序。例如,Maple任务A、B、C和D。然而,这些任务需要按照依赖性的顺序进行排序。例如,任务B只能在任务D完成后才能完成。因此,任务的顺序是: A D B C 我有一些Python代码,有没有办法让这些代码在Rails中工作(就像在纠正语法/方法中一样) require'set' 类循环依赖性错误

我有一个简单的问题需要解决。我有一些代码,可以根据其他任务对任务进行排序。例如,Maple任务A、B、C和D。然而,这些任务需要按照依赖性的顺序进行排序。例如,任务B只能在任务D完成后才能完成。因此,任务的顺序是:

  • A
  • D
  • B
  • C
我有一些Python代码,有没有办法让这些代码在Rails中工作(就像在纠正语法/方法中一样)

require'set'
类循环依赖性错误<异常
结束
课堂任务
属性读取器:名称,:取决于
def初始化(任务名称,依赖项=[])
@名称=任务名称
@dependens=Set.new依赖项
结束
定义添加依赖项(*d)
@d.合并
结束
def(rhs)
if dependens.include?(rhs.name)和rhs.dependens.include?(name)
引发循环依赖性错误,
“#{name}和#{rhs.name}相互依赖”
elsif rhs.dependens.include?名称
-1
艾尔希夫:包括吗?rhs.name
1.
其他的
0
结束
结束
结束
任务=[
新任务(“A”、“B”、“C”),
新任务(“B”、“C”、“D”),
]
t=任务。新(“C”)
t、 添加依赖项(“D”、“E”)
任务
class Node:
def __init__(self, name):
  self.name = name
  self.edges = []

def addEdge(self, node):
  self.edges.append(node)
require 'set'

class CircularDependenciesError < Exception
end

class Task
  attr_reader :name, :depends

  def initialize(task_name, dependencies=[])
    @name = task_name
    @depends = Set.new dependencies
  end

  def add_dependencies(*d)
    @depends.merge d 
  end

  def <=>(rhs)
    if depends.include?(rhs.name) and rhs.depends.include?(name) 
      raise CircularDependenciesError,
            "#{name} and #{rhs.name} depend on each other"
    elsif rhs.depends.include? name 
      -1
    elsif depends.include? rhs.name
      1
    else 
      0
    end
  end
end

tasks = [
  Task.new("A", ["B", "C"]),
  Task.new("B", ["C", "D"]),
]

t = Task.new("C")
t.add_dependencies("D", "E")
tasks << t

p tasks
p tasks.sort

--output:--
[#<Task:0x000001018c0530 @name="A", @depends=#<Set: {"B", "C"}>>,
 #<Task:0x000001018c0350 @name="B", @depends=#<Set: {"C", "D"}>>,
 #<Task:0x000001018c01c0 @name="C", @depends=#<Set: {"D", "E"}>>]

[#<Task:0x000001018c01c0 @name="C", @depends=#<Set: {"D", "E"}>>,
 #<Task:0x000001018c0350 @name="B", @depends=#<Set: {"C", "D"}>>,
 #<Task:0x000001018c0530 @name="A", @depends=#<Set: {"B", "C"}>>]