peripheral.find

From ComputerCraft Wiki
Revision as of 15:24, 1 August 2015 by Wyvern67 (Talk | contribs)

Jump to: navigation, search


Grid Redstone.png  Function peripheral.find
Introduced by ComputerCraft 1.6, returns a list of handles for connected peripherals that match the supplied type (essentially performing as a filtered version of peripheral.wrap()).

A custom function may additionally be passed as a parameter - if it's supplied, each matching peripheral's name and handle will be passed to it during the search, and they'll only be included in the final results if it returns "true".
Syntax peripheral.find(string type [, function fnFilter( name, object )])
Returns table handle1, table handle2, ... handles to peripherals of the given type
Part of ComputerCraft
API peripheral

Examples

Grid paper.png  Example
Finds a monitor and writes 'Hello' on it.
Code
local monitor = peripheral.find("monitor")

if monitor then
  monitor.write("Hello")
end
Output If there is a monitor connected 'Hello' will be written on it.



Grid paper.png  Example
Finds 2 advanced monitors and writes 'Hello' on the first and 'World' on the second.
Code
local mon1, mon2 = peripheral.find("monitor", function(name, object) return object.isColour() end)

if mon1 then
  mon1.setTextColour(colours.blue)
  mon1.write("Hello")
end
if mon2 then
  mon2.setTextColour(colours.red)
  mon2.write("World")
end
Output If it finds 1 advanced monitor, 'Hello' will be written on it. If it finds 2 advanced monitors, 'Hello' will be written on the first and 'World' on the second.



Grid paper.png  Example
If six monitors were to be attached to a computer, peripheral.find("monitor") would return their handles in that order: Bottom, top, back, front, right and left.

That order always stays the same. The bottom peripheral will always have the priority and be returned first.

peripheral.getNames() follows the same return pattern. It could be used to find out the order in which the peripheral handles will be returned when using peripheral.find().
Code
local bottomMonitor, topMonitor, backMonitor, frontMonitor, rightMonitor, leftMonitor = peripheral.find("monitor")
textutils.tabulate(peripheral.getNames())
Output  Will print the string 'bottom top back front right left' on the terminal.