Răsfoiți Sursa

Recursive yield of sub hardware

Nick Babcock 6 ani în urmă
părinte
comite
3e21618887
1 a modificat fișierele cu 12 adăugiri și 6 ștergeri
  1. 12 6
      OhmGraphite/SensorCollector.cs

+ 12 - 6
OhmGraphite/SensorCollector.cs

@@ -13,15 +13,21 @@ namespace OhmGraphite
         public SensorCollector(Computer computer) => _computer = computer;
         public void Open() => _computer.Open();
         public void Close() => _computer.Close();
-        public IEnumerable<ReportedValue> ReadAllSensors() => ReadHardware().SelectMany(ReadSensors);
+        public IEnumerable<ReportedValue> ReadAllSensors() =>
+            _computer
+                .Hardware
+                .SelectMany(ReadHardware)
+                .SelectMany(ReadSensors);
 
-        private IEnumerable<IHardware> ReadHardware()
+        private static IEnumerable<IHardware> ReadHardware(IHardware hardware)
         {
-            foreach (var hardware in _computer.Hardware)
+            yield return hardware;
+            foreach (var subHardware in hardware.SubHardware)
             {
-                yield return hardware;
-
-                foreach (var subHardware in hardware.SubHardware) yield return subHardware;
+                foreach (var ware in ReadHardware(subHardware))
+                {
+                    yield return ware;
+                }
             }
         }