From: Javier Abaroa Date: 2010-03-31T00:42:20+09:00 Subject: Re: require and include?? Hello, Ruby is different of other languages as php. In php, "include" an "require" put the content of a the file "called" into the "caller" file. Ruby "require" statement is analogous to php statement and put the content of "called" file into "caller". But ruby "include" statement is for include one "module" that is in a "yet required file" into a class of the actual file. If you intend to make reference in a class of your actual script-file to a module in other file, normally you have to make the following: # called file - name hello.rb module Called { def Called.Hello() # Defines Function Hello of Module Called puts "hello" end } # caller file - name caller.rb require "hello.rb" class MyClass } include Called # Includes Module Called into MyClass def MyHello() Called.Hello() # Execute function Hello of Module "Called" end } MyVar = MyClass.new() # Create a new MyClass Object MyVar.MyHello() # Execute function MyHello for MyVar, calling the function Called.Hello() Javier Abaroa rantingrick wrote: > Hello, > > I am having trouble understanding the difference between require and > include. Also i need to know how to import a certain function or class > into my current namespace. > > Now before i go any further i should explain that i am a Python > programmer and i understand that whilst Ruby and Python share some > similarities there are major differences between the languages, and > that is what seems to have me stumped here. > > In python we use the "import" statement to bring modules, functions, > whatever. And the import statement can function in many ways, > observe... > > if i want to bring all the names from the math module into my current > namespace without the need to qualify the names i can say...(note: > dir() shows the current namespace!) >>>> dir() > ['__builtins__', '__doc__', '__name__', '__package__'] >>>> from math import * >>>> dir() > ['__builtins__', '__doc__', '__name__', '__package__', 'acos', > 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', > 'copysign', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'factorial', > 'floor', 'fmod', 'frexp', 'fsum', 'hypot', 'isinf', 'isnan', 'ldexp', > 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', > 'sinh', 'sqrt', 'tan', 'tanh', 'trunc'] >>>> hypot(3,4) > 5.0 > > Now if i want to just use a certain function, class, constant, i can > call for just those specific names like... > >>>> dir() > ['__builtins__', '__doc__', '__name__', '__package__'] >>>> from math import hypot, pi >>>> dir() > ['__builtins__', '__doc__', '__name__', '__package__', 'hypot', 'pi'] >>>> pi > 3.1415926535897931 >>>> hypot(3,4) > 5.0 >>>> > > Now if i want to bring a reference to the module in and then qualify > every thing within the module by perpending the > "module_name.identifier" i can say... > >>>> import math >>>> dir() > ['__builtins__', '__doc__', '__name__', '__package__', 'math'] >>>> math.hypot(3,4) > 5.0 > > Ok, i know Ruby is different, so tell me how i do the same thing only > in Ruby terms. Specifically i need to bring in a function that resides > in a module in a different file. How do i do this? -- Posted via http://www.ruby-forum.com/.