<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Atmughra</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Atmughra"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Atmughra"/>
	<updated>2026-05-23T02:01:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Atmughra&amp;diff=93593</id>
		<title>User:Atmughra</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Atmughra&amp;diff=93593"/>
		<updated>2015-02-09T21:49:18Z</updated>

		<summary type="html">&lt;p&gt;Atmughra: moved User:Atmughra to CSC/ECE 517 Spring 2015/ch1a 8 AT: Conform to submission requirements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[CSC/ECE 517 Spring 2015/ch1a 8 AT]]&lt;/div&gt;</summary>
		<author><name>Atmughra</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93592</id>
		<title>CSC/ECE 517 Spring 2015/ch1a 8 AT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93592"/>
		<updated>2015-02-09T21:49:18Z</updated>

		<summary type="html">&lt;p&gt;Atmughra: moved User:Atmughra to CSC/ECE 517 Spring 2015/ch1a 8 AT: Conform to submission requirements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''New Keywords Arguments''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Keyword arguments is feature that lets you specify by name, the parameter that you are going to pass to a method or a function call.  Although it considered very powerful and expressive ,the ruby team didn't include it in their tool-chain until ruby 2.0.0 was introduced. One might think why you need such syntactic sugar while clearly you have alternatives like providing parameter with default values. &lt;br /&gt;
&lt;br /&gt;
In the example provided below, passing default parameter in Ruby can be illustrated as the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo( arg1='Hello', arg2='world', arg3='!' )&lt;br /&gt;
	&lt;br /&gt;
	puts &amp;quot;#{arg1} #{arg2} #{arg3}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end  &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo( 'Trying out' ) &lt;br /&gt;
foo( 'Testing', 'this great' )&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One drawback of such approach is that there is no out of order passing for the parameters to the function nor we can omit any of them.  &lt;br /&gt;
Another example of how tedious using the conventional approach, is programming using  API libraries&amp;lt;ref&amp;gt;http://dev.af83.com/2013/02/18/ruby-2-0-keyword-arguments.html&amp;lt;/ref&amp;gt; that require to pass a lot of arguments, while not needing most of the arguments that we passed just in order to make it work. &lt;br /&gt;
&lt;br /&gt;
Keyword arguments comes into play in a way, that it lets you specify the arguments without being concerned with their order, or number. you only need to pass the arguments that you need. On the other hand the method still maintains it's complexity without trimming its argument list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Using Keyword Argument for Ruby in Old Versions''' ==&lt;br /&gt;
&lt;br /&gt;
Previously, Ruby (&amp;lt; 2.0.0) provided this mechanism using hashes&amp;lt;ref&amp;gt;http://ruby.about.com/od/advancedruby/qt/opthash.htm&amp;lt;/ref&amp;gt;. While hashes emulate this feature it far from perfect and it has it's own issues and problems lets consider this example. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(args={})&lt;br /&gt;
&lt;br /&gt;
	defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'Really',:arg3 =&amp;gt;'Works!'}.merge(args)&lt;br /&gt;
&lt;br /&gt;
	puts &amp;quot;#{defaults[:arg1]} #{defaults[:arg2]} #{defaults[:arg3]}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo( :arg2 =&amp;gt; 'AAA!' )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the example shown above we can deduce the following, the technique of merging hashes is used as a way to pass the parameters you want with the default parameters. Lets go back to our example and look at the values of defaults hash before passing any parameters to it.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'Really',:arg3 =&amp;gt;'Works!'&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but after the merger of the hash the default parameter list becomes  as illustrated below, after our “foo( :arg2 =&amp;gt; 'AAA!' )” function call.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'AAA!',:arg3 =&amp;gt;'Works!}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hence the merge function replaces the key with new value obtaining a new parameters hash list.&lt;br /&gt;
&lt;br /&gt;
Although this method is considered a good alternative to the real keyword argument approach it creates an over head in terms of using the merge function and adding an extra default parameter list, consequently affecting performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Using Keyword Argument for Ruby at Newer Versions''' ==&lt;br /&gt;
&lt;br /&gt;
Once Ruby 2.0.0 was released it introduced the formal way of using keyword arguments, without the need to using previous hashing methods.&lt;br /&gt;
&lt;br /&gt;
Using our previously illustrated example&amp;lt;ref&amp;gt;http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example/&amp;lt;/ref&amp;gt; it becomes as the following.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(arg1:'It',arg2:'Really',arg3:'Works!')&lt;br /&gt;
&lt;br /&gt;
	puts &amp;quot;#{arg1} #{arg2} #{arg3}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo(arg2:'AAA!' )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The example shows how different the new approach is from the hashing approach now you don't need to specify a parameter hash table, also you get an argument check for the valid parameters you can pass. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#hashing approach( foo function is called with invalid argument)&lt;br /&gt;
&lt;br /&gt;
foo( :arg4 =&amp;gt; 'invalid!' )&lt;br /&gt;
&lt;br /&gt;
#=&amp;gt; nothing happens&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#proper approach (Ruby 2.0.0&lt;br /&gt;
&lt;br /&gt;
foo( arg4:'invalid!' )&lt;br /&gt;
&lt;br /&gt;
#=&amp;gt;ArgumentError: unknown keyword: arg5&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore using this approach is more convenient in many ways as it produces lesser code, thus affecting performance.&lt;br /&gt;
&lt;br /&gt;
Using this feature in Ruby (&amp;gt;= 2.0.0) some needs to take the following into consideration&amp;lt;ref&amp;gt;http://dev.af83.com/2013/02/18/ruby-2-0-keyword-arguments.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*All keyword arguments must be located at the end of the argument list&amp;lt;ref&amp;gt;http://chriszetter.com/blog/2012/11/02/keyword-arguments-in-ruby-2-dot-0/&amp;lt;/ref&amp;gt;, for example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
foo(arg1:'It',arg2:'Really',arg3:'Works!', argument )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
The previous call is considered illegal. With an only exception which are block arguments&amp;lt;ref&amp;gt;http://ruby.about.com/od/beginningruby/a/blocks.htm&amp;lt;/ref&amp;gt; as those are located at the end of the argument list.&lt;br /&gt;
&lt;br /&gt;
*Furthermore, keyword arguments behavior is different form default arguments. You have to speciy the name of the argument when calling a method, for example.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Def foo(a, b=10)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#calling:&lt;br /&gt;
foo(1,2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(a, b:10)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#calling:&lt;br /&gt;
foo(1,b:2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''conclusion''' ==&lt;br /&gt;
&lt;br /&gt;
Eventually keyword arguments have their own trade-offs, on the positive side they provide an easer way for the developer to call on methods. Furthermore, providing better clarity and maintainability of the code. But on the other hand using position arguments provide more expressiveness for presenting methods. Looking at the function with all it arguments can provide explanatory means to understand what it does. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''references''' ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Atmughra</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93588</id>
		<title>CSC/ECE 517 Spring 2015/ch1a 8 AT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93588"/>
		<updated>2015-02-09T21:45:42Z</updated>

		<summary type="html">&lt;p&gt;Atmughra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''New Keywords Arguments''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Keyword arguments is feature that lets you specify by name, the parameter that you are going to pass to a method or a function call.  Although it considered very powerful and expressive ,the ruby team didn't include it in their tool-chain until ruby 2.0.0 was introduced. One might think why you need such syntactic sugar while clearly you have alternatives like providing parameter with default values. &lt;br /&gt;
&lt;br /&gt;
In the example provided below, passing default parameter in Ruby can be illustrated as the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo( arg1='Hello', arg2='world', arg3='!' )&lt;br /&gt;
	&lt;br /&gt;
	puts &amp;quot;#{arg1} #{arg2} #{arg3}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end  &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo( 'Trying out' ) &lt;br /&gt;
foo( 'Testing', 'this great' )&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One drawback of such approach is that there is no out of order passing for the parameters to the function nor we can omit any of them.  &lt;br /&gt;
Another example of how tedious using the conventional approach, is programming using  API libraries&amp;lt;ref&amp;gt;http://dev.af83.com/2013/02/18/ruby-2-0-keyword-arguments.html&amp;lt;/ref&amp;gt; that require to pass a lot of arguments, while not needing most of the arguments that we passed just in order to make it work. &lt;br /&gt;
&lt;br /&gt;
Keyword arguments comes into play in a way, that it lets you specify the arguments without being concerned with their order, or number. you only need to pass the arguments that you need. On the other hand the method still maintains it's complexity without trimming its argument list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Using Keyword Argument for Ruby in Old Versions''' ==&lt;br /&gt;
&lt;br /&gt;
Previously, Ruby (&amp;lt; 2.0.0) provided this mechanism using hashes&amp;lt;ref&amp;gt;http://ruby.about.com/od/advancedruby/qt/opthash.htm&amp;lt;/ref&amp;gt;. While hashes emulate this feature it far from perfect and it has it's own issues and problems lets consider this example. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(args={})&lt;br /&gt;
&lt;br /&gt;
	defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'Really',:arg3 =&amp;gt;'Works!'}.merge(args)&lt;br /&gt;
&lt;br /&gt;
	puts &amp;quot;#{defaults[:arg1]} #{defaults[:arg2]} #{defaults[:arg3]}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo( :arg2 =&amp;gt; 'AAA!' )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the example shown above we can deduce the following, the technique of merging hashes is used as a way to pass the parameters you want with the default parameters. Lets go back to our example and look at the values of defaults hash before passing any parameters to it.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'Really',:arg3 =&amp;gt;'Works!'&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but after the merger of the hash the default parameter list becomes  as illustrated below, after our “foo( :arg2 =&amp;gt; 'AAA!' )” function call.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'AAA!',:arg3 =&amp;gt;'Works!}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hence the merge function replaces the key with new value obtaining a new parameters hash list.&lt;br /&gt;
&lt;br /&gt;
Although this method is considered a good alternative to the real keyword argument approach it creates an over head in terms of using the merge function and adding an extra default parameter list, consequently affecting performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Using Keyword Argument for Ruby at Newer Versions''' ==&lt;br /&gt;
&lt;br /&gt;
Once Ruby 2.0.0 was released it introduced the formal way of using keyword arguments, without the need to using previous hashing methods.&lt;br /&gt;
&lt;br /&gt;
Using our previously illustrated example&amp;lt;ref&amp;gt;http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example/&amp;lt;/ref&amp;gt; it becomes as the following.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(arg1:'It',arg2:'Really',arg3:'Works!')&lt;br /&gt;
&lt;br /&gt;
	puts &amp;quot;#{arg1} #{arg2} #{arg3}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo(arg2:'AAA!' )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The example shows how different the new approach is from the hashing approach now you don't need to specify a parameter hash table, also you get an argument check for the valid parameters you can pass. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#hashing approach( foo function is called with invalid argument)&lt;br /&gt;
&lt;br /&gt;
foo( :arg4 =&amp;gt; 'invalid!' )&lt;br /&gt;
&lt;br /&gt;
#=&amp;gt; nothing happens&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#proper approach (Ruby 2.0.0&lt;br /&gt;
&lt;br /&gt;
foo( arg4:'invalid!' )&lt;br /&gt;
&lt;br /&gt;
#=&amp;gt;ArgumentError: unknown keyword: arg5&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore using this approach is more convenient in many ways as it produces lesser code, thus affecting performance.&lt;br /&gt;
&lt;br /&gt;
Using this feature in Ruby (&amp;gt;= 2.0.0) some needs to take the following into consideration&amp;lt;ref&amp;gt;http://dev.af83.com/2013/02/18/ruby-2-0-keyword-arguments.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*All keyword arguments must be located at the end of the argument list&amp;lt;ref&amp;gt;http://chriszetter.com/blog/2012/11/02/keyword-arguments-in-ruby-2-dot-0/&amp;lt;/ref&amp;gt;, for example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
foo(arg1:'It',arg2:'Really',arg3:'Works!', argument )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
The previous call is considered illegal. With an only exception which are block arguments&amp;lt;ref&amp;gt;http://ruby.about.com/od/beginningruby/a/blocks.htm&amp;lt;/ref&amp;gt; as those are located at the end of the argument list.&lt;br /&gt;
&lt;br /&gt;
*Furthermore, keyword arguments behavior is different form default arguments. You have to speciy the name of the argument when calling a method, for example.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Def foo(a, b=10)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#calling:&lt;br /&gt;
foo(1,2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(a, b:10)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#calling:&lt;br /&gt;
foo(1,b:2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''conclusion''' ==&lt;br /&gt;
&lt;br /&gt;
Eventually keyword arguments have their own trade-offs, on the positive side they provide an easer way for the developer to call on methods. Furthermore, providing better clarity and maintainability of the code. But on the other hand using position arguments provide more expressiveness for presenting methods. Looking at the function with all it arguments can provide explanatory means to understand what it does. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''references''' ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Atmughra</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93587</id>
		<title>CSC/ECE 517 Spring 2015/ch1a 8 AT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93587"/>
		<updated>2015-02-09T21:45:31Z</updated>

		<summary type="html">&lt;p&gt;Atmughra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== '''New Keywords Arguments''' ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Keyword arguments is feature that lets you specify by name, the parameter that you are going to pass to a method or a function call.  Although it considered very powerful and expressive ,the ruby team didn't include it in their tool-chain until ruby 2.0.0 was introduced. One might think why you need such syntactic sugar while clearly you have alternatives like providing parameter with default values. &lt;br /&gt;
&lt;br /&gt;
In the example provided below, passing default parameter in Ruby can be illustrated as the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo( arg1='Hello', arg2='world', arg3='!' )&lt;br /&gt;
	&lt;br /&gt;
	puts &amp;quot;#{arg1} #{arg2} #{arg3}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end  &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo( 'Trying out' ) &lt;br /&gt;
foo( 'Testing', 'this great' )&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One drawback of such approach is that there is no out of order passing for the parameters to the function nor we can omit any of them.  &lt;br /&gt;
Another example of how tedious using the conventional approach, is programming using  API libraries&amp;lt;ref&amp;gt;http://dev.af83.com/2013/02/18/ruby-2-0-keyword-arguments.html&amp;lt;/ref&amp;gt; that require to pass a lot of arguments, while not needing most of the arguments that we passed just in order to make it work. &lt;br /&gt;
&lt;br /&gt;
Keyword arguments comes into play in a way, that it lets you specify the arguments without being concerned with their order, or number. you only need to pass the arguments that you need. On the other hand the method still maintains it's complexity without trimming its argument list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Using Keyword Argument for Ruby in Old Versions''' ==&lt;br /&gt;
&lt;br /&gt;
Previously, Ruby (&amp;lt; 2.0.0) provided this mechanism using hashes&amp;lt;ref&amp;gt;http://ruby.about.com/od/advancedruby/qt/opthash.htm&amp;lt;/ref&amp;gt;. While hashes emulate this feature it far from perfect and it has it's own issues and problems lets consider this example. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(args={})&lt;br /&gt;
&lt;br /&gt;
	defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'Really',:arg3 =&amp;gt;'Works!'}.merge(args)&lt;br /&gt;
&lt;br /&gt;
	puts &amp;quot;#{defaults[:arg1]} #{defaults[:arg2]} #{defaults[:arg3]}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo( :arg2 =&amp;gt; 'AAA!' )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the example shown above we can deduce the following, the technique of merging hashes is used as a way to pass the parameters you want with the default parameters. Lets go back to our example and look at the values of defaults hash before passing any parameters to it.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'Really',:arg3 =&amp;gt;'Works!'&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but after the merger of the hash the default parameter list becomes  as illustrated below, after our “foo( :arg2 =&amp;gt; 'AAA!' )” function call.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'AAA!',:arg3 =&amp;gt;'Works!}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hence the merge function replaces the key with new value obtaining a new parameters hash list.&lt;br /&gt;
&lt;br /&gt;
Although this method is considered a good alternative to the real keyword argument approach it creates an over head in terms of using the merge function and adding an extra default parameter list, consequently affecting performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Using Keyword Argument for Ruby at Newer Versions''' ==&lt;br /&gt;
&lt;br /&gt;
Once Ruby 2.0.0 was released it introduced the formal way of using keyword arguments, without the need to using previous hashing methods.&lt;br /&gt;
&lt;br /&gt;
Using our previously illustrated example&amp;lt;ref&amp;gt;http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example/&amp;lt;/ref&amp;gt; it becomes as the following.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(arg1:'It',arg2:'Really',arg3:'Works!')&lt;br /&gt;
&lt;br /&gt;
	puts &amp;quot;#{arg1} #{arg2} #{arg3}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo(arg2:'AAA!' )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The example shows how different the new approach is from the hashing approach now you don't need to specify a parameter hash table, also you get an argument check for the valid parameters you can pass. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#hashing approach( foo function is called with invalid argument)&lt;br /&gt;
&lt;br /&gt;
foo( :arg4 =&amp;gt; 'invalid!' )&lt;br /&gt;
&lt;br /&gt;
#=&amp;gt; nothing happens&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#proper approach (Ruby 2.0.0&lt;br /&gt;
&lt;br /&gt;
foo( arg4:'invalid!' )&lt;br /&gt;
&lt;br /&gt;
#=&amp;gt;ArgumentError: unknown keyword: arg5&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore using this approach is more convenient in many ways as it produces lesser code, thus affecting performance.&lt;br /&gt;
&lt;br /&gt;
Using this feature in Ruby (&amp;gt;= 2.0.0) some needs to take the following into consideration&amp;lt;ref&amp;gt;http://dev.af83.com/2013/02/18/ruby-2-0-keyword-arguments.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*All keyword arguments must be located at the end of the argument list&amp;lt;ref&amp;gt;http://chriszetter.com/blog/2012/11/02/keyword-arguments-in-ruby-2-dot-0/&amp;lt;/ref&amp;gt;, for example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
foo(arg1:'It',arg2:'Really',arg3:'Works!', argument )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
The previous call is considered illegal. With an only exception which are block arguments&amp;lt;ref&amp;gt;http://ruby.about.com/od/beginningruby/a/blocks.htm&amp;lt;/ref&amp;gt; as those are located at the end of the argument list.&lt;br /&gt;
&lt;br /&gt;
*Furthermore, keyword arguments behavior is different form default arguments. You have to speciy the name of the argument when calling a method, for example.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Def foo(a, b=10)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#calling:&lt;br /&gt;
foo(1,2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(a, b:10)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#calling:&lt;br /&gt;
foo(1,b:2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''conclusion''' ==&lt;br /&gt;
&lt;br /&gt;
Eventually keyword arguments have their own trade-offs, on the positive side they provide an easer way for the developer to call on methods. Furthermore, providing better clarity and maintainability of the code. But on the other hand using position arguments provide more expressiveness for presenting methods. Looking at the function with all it arguments can provide explanatory means to understand what it does. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''references''' ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Atmughra</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93583</id>
		<title>CSC/ECE 517 Spring 2015/ch1a 8 AT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93583"/>
		<updated>2015-02-09T21:43:30Z</updated>

		<summary type="html">&lt;p&gt;Atmughra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Keyword arguments is feature that lets you specify by name, the parameter that you are going to pass to a method or a function call.  Although it considered very powerful and expressive ,the ruby team didn't include it in their tool-chain until ruby 2.0.0 was introduced. One might think why you need such syntactic sugar while clearly you have alternatives like providing parameter with default values. &lt;br /&gt;
&lt;br /&gt;
In the example provided below, passing default parameter in Ruby can be illustrated as the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo( arg1='Hello', arg2='world', arg3='!' )&lt;br /&gt;
	&lt;br /&gt;
	puts &amp;quot;#{arg1} #{arg2} #{arg3}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end  &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo( 'Trying out' ) &lt;br /&gt;
foo( 'Testing', 'this great' )&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One drawback of such approach is that there is no out of order passing for the parameters to the function nor we can omit any of them.  &lt;br /&gt;
Another example of how tedious using the conventional approach, is programming using  API libraries&amp;lt;ref&amp;gt;http://dev.af83.com/2013/02/18/ruby-2-0-keyword-arguments.html&amp;lt;/ref&amp;gt; that require to pass a lot of arguments, while not needing most of the arguments that we passed just in order to make it work. &lt;br /&gt;
&lt;br /&gt;
Keyword arguments comes into play in a way, that it lets you specify the arguments without being concerned with their order, or number. you only need to pass the arguments that you need. On the other hand the method still maintains it's complexity without trimming its argument list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Using Keyword Argument for Ruby in Old Versions''' ==&lt;br /&gt;
&lt;br /&gt;
Previously, Ruby (&amp;lt; 2.0.0) provided this mechanism using hashes&amp;lt;ref&amp;gt;http://ruby.about.com/od/advancedruby/qt/opthash.htm&amp;lt;/ref&amp;gt;. While hashes emulate this feature it far from perfect and it has it's own issues and problems lets consider this example. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(args={})&lt;br /&gt;
&lt;br /&gt;
	defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'Really',:arg3 =&amp;gt;'Works!'}.merge(args)&lt;br /&gt;
&lt;br /&gt;
	puts &amp;quot;#{defaults[:arg1]} #{defaults[:arg2]} #{defaults[:arg3]}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo( :arg2 =&amp;gt; 'AAA!' )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the example shown above we can deduce the following, the technique of merging hashes is used as a way to pass the parameters you want with the default parameters. Lets go back to our example and look at the values of defaults hash before passing any parameters to it.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'Really',:arg3 =&amp;gt;'Works!'&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but after the merger of the hash the default parameter list becomes  as illustrated below, after our “foo( :arg2 =&amp;gt; 'AAA!' )” function call.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'AAA!',:arg3 =&amp;gt;'Works!}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hence the merge function replaces the key with new value obtaining a new parameters hash list.&lt;br /&gt;
&lt;br /&gt;
Although this method is considered a good alternative to the real keyword argument approach it creates an over head in terms of using the merge function and adding an extra default parameter list, consequently affecting performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Using Keyword Argument for Ruby at Newer Versions''' ==&lt;br /&gt;
&lt;br /&gt;
Once Ruby 2.0.0 was released it introduced the formal way of using keyword arguments, without the need to using previous hashing methods.&lt;br /&gt;
&lt;br /&gt;
Using our previously illustrated example&amp;lt;ref&amp;gt;http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example/&amp;lt;/ref&amp;gt; it becomes as the following.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(arg1:'It',arg2:'Really',arg3:'Works!')&lt;br /&gt;
&lt;br /&gt;
	puts &amp;quot;#{arg1} #{arg2} #{arg3}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo(arg2:'AAA!' )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The example shows how different the new approach is from the hashing approach now you don't need to specify a parameter hash table, also you get an argument check for the valid parameters you can pass. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#hashing approach( foo function is called with invalid argument)&lt;br /&gt;
&lt;br /&gt;
foo( :arg4 =&amp;gt; 'invalid!' )&lt;br /&gt;
&lt;br /&gt;
#=&amp;gt; nothing happens&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#proper approach (Ruby 2.0.0&lt;br /&gt;
&lt;br /&gt;
foo( arg4:'invalid!' )&lt;br /&gt;
&lt;br /&gt;
#=&amp;gt;ArgumentError: unknown keyword: arg5&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore using this approach is more convenient in many ways as it produces lesser code, thus affecting performance.&lt;br /&gt;
&lt;br /&gt;
Using this feature in Ruby (&amp;gt;= 2.0.0) some needs to take the following into consideration&amp;lt;ref&amp;gt;http://dev.af83.com/2013/02/18/ruby-2-0-keyword-arguments.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*All keyword arguments must be located at the end of the argument list&amp;lt;ref&amp;gt;http://chriszetter.com/blog/2012/11/02/keyword-arguments-in-ruby-2-dot-0/&amp;lt;/ref&amp;gt;, for example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
foo(arg1:'It',arg2:'Really',arg3:'Works!', argument )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
The previous call is considered illegal. With an only exception which are block arguments&amp;lt;ref&amp;gt;http://ruby.about.com/od/beginningruby/a/blocks.htm&amp;lt;/ref&amp;gt; as those are located at the end of the argument list.&lt;br /&gt;
&lt;br /&gt;
*Furthermore, keyword arguments behavior is different form default arguments. You have to speciy the name of the argument when calling a method, for example.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Def foo(a, b=10)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#calling:&lt;br /&gt;
foo(1,2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(a, b:10)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#calling:&lt;br /&gt;
foo(1,b:2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''conclusion''' ==&lt;br /&gt;
&lt;br /&gt;
Eventually keyword arguments have their own trade-offs, on the positive side they provide an easer way for the developer to call on methods. Furthermore, providing better clarity and maintainability of the code. But on the other hand using position arguments provide more expressiveness for presenting methods. Looking at the function with all it arguments can provide explanatory means to understand what it does. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''references''' ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Atmughra</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93575</id>
		<title>CSC/ECE 517 Spring 2015/ch1a 8 AT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93575"/>
		<updated>2015-02-09T21:30:32Z</updated>

		<summary type="html">&lt;p&gt;Atmughra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Keyword arguments is feature that lets you specify by name, the parameter that you are going to pass to a method or a function call.  Although it considered very powerful and expressive ,the ruby team didn't include it in their tool-chain until ruby 2.0.0 was introduced. One might think why you need such syntactic sugar while clearly you have alternatives like providing parameter with default values. &lt;br /&gt;
&lt;br /&gt;
In the example provided below, passing default parameter in Ruby can be illustrated as the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo( arg1='Hello', arg2='world', arg3='!' )&lt;br /&gt;
	&lt;br /&gt;
	puts &amp;quot;#{arg1} #{arg2} #{arg3}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end  &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo( 'Trying out' ) &lt;br /&gt;
foo( 'Testing', 'this great' )&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One drawback of such approach is that there is no out of order passing for the parameters to the function nor we can omit any of them.  &lt;br /&gt;
Another example of how tedious using the conventional approach, is programming using  API libraries that require to pass a lot of arguments, while not needing most of the arguments that we passed just in order to make it work. &lt;br /&gt;
&lt;br /&gt;
Keyword arguments comes into play in a way, that it lets you specify the arguments without being concerned with their order, or number. you only need to pass the arguments that you need. On the other hand the method still maintains it's complexity without trimming its argument list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using Keyword Argument for Ruby in Old Versions ==&lt;br /&gt;
&lt;br /&gt;
Previously, Ruby (&amp;lt; 2.0.0) provided this mechanism using hashes. While hashes emulate this feature it far from perfect and it has it's own issues and problems lets consider this example. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(args={})&lt;br /&gt;
&lt;br /&gt;
	defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'Really',:arg3 =&amp;gt;'Works!'}.merge(args)&lt;br /&gt;
&lt;br /&gt;
	puts &amp;quot;#{defaults[:arg1]} #{defaults[:arg2]} #{defaults[:arg3]}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo( :arg2 =&amp;gt; 'AAA!' )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the example shown above we can deduce the following, the technique of merging hashes is used as a way to pass the parameters you want with the default parameters. Lets go back to our example and look at the values of defaults hash before passing any parameters to it.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'Really',:arg3 =&amp;gt;'Works!'&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but after the merger of the hash the default parameter list becomes  as illustrated below, after our “foo( :arg2 =&amp;gt; 'AAA!' )” function call.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
defaults={:arg1=&amp;gt;'It',:arg2=&amp;gt;'AAA!',:arg3 =&amp;gt;'Works!}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hence the merge function replaces the key with new value obtaining a new parameters hash list.&lt;br /&gt;
&lt;br /&gt;
Although this method is considered a good alternative to the real keyword argument approach it creates an over head in terms of using the merge function and adding an extra default parameter list, consequently affecting performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using Keyword Argument for Ruby at Newer Versions ==&lt;br /&gt;
&lt;br /&gt;
Once Ruby 2.0.0 was released it introduced the formal way of using keyword arguments, without the need to using previous hashing methods.&lt;br /&gt;
&lt;br /&gt;
Using our previously illustrated example it becomes as the following.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(arg1:'It',arg2:'Really',arg3:'Works!')&lt;br /&gt;
&lt;br /&gt;
	puts &amp;quot;#{arg1} #{arg2} #{arg3}&amp;quot; &lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
foo&lt;br /&gt;
foo(arg2:'AAA!' )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The example shows how different the new approach is from the hashing approach now you don't need to specify a parameter hash table, also you get an argument check for the valid parameters you can pass. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#hashing approach( foo function is called with invalid argument)&lt;br /&gt;
&lt;br /&gt;
foo( :arg4 =&amp;gt; 'invalid!' )&lt;br /&gt;
&lt;br /&gt;
#=&amp;gt; nothing happens&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#proper approach (Ruby 2.0.0&lt;br /&gt;
&lt;br /&gt;
foo( arg4:'invalid!' )&lt;br /&gt;
&lt;br /&gt;
#=&amp;gt;ArgumentError: unknown keyword: arg5&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore using this approach is more convenient in many ways as it produces lesser code, thus affecting performance.&lt;br /&gt;
&lt;br /&gt;
Using this feature in Ruby (&amp;gt;= 2.0.0) some needs to take the following into consideration.&lt;br /&gt;
&lt;br /&gt;
*All keyword arguments must be located at the end of the argument list, for example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
foo(arg1:'It',arg2:'Really',arg3:'Works!', argument )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
is considered illegal. With an only exception which are block arguments[2] as those are located at the end of the argument list.&lt;br /&gt;
&lt;br /&gt;
*Furthermore, keyword arguments behavior is different form default arguments. You have to speciy the name of the argument when calling a method, for example.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Def foo(a, b=10)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#calling:&lt;br /&gt;
foo(1,2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
def foo(a, b:10)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
#calling:&lt;br /&gt;
foo(1,b:2)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== conclusion ==&lt;br /&gt;
&lt;br /&gt;
Eventually keyword arguments have their own trade-offs, on the positive side they provide an easer way for the developer to call on methods. Furthermore, providing better clarity and maintainability of the code. But on the other hand using position arguments provide more expressiveness for presenting methods. Looking at the function with all it arguments can provide explanatory means to understand what it does. &lt;br /&gt;
&lt;br /&gt;
[1] http://brainspec.com/blog/2012/10/08/keyword-arguments-ruby-2-0/&lt;br /&gt;
[2] http://dev.af83.com/2013/02/18/ruby-2-0-keyword-arguments.html&lt;br /&gt;
[3] http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example/&lt;br /&gt;
[4] http://chriszetter.com/blog/2012/11/02/keyword-arguments-in-ruby-2-dot-0/&lt;br /&gt;
[5] http://ruby.about.com/od/advancedruby/qt/opthash.htm&lt;br /&gt;
[6] http://ruby.about.com/od/beginningruby/a/blocks.htm&lt;/div&gt;</summary>
		<author><name>Atmughra</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2014/ch1a_1i_rt&amp;diff=93571</id>
		<title>CSC/ECE 517 Spring 2014/ch1a 1i rt</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2014/ch1a_1i_rt&amp;diff=93571"/>
		<updated>2015-02-09T21:07:39Z</updated>

		<summary type="html">&lt;p&gt;Atmughra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''New Keyword Arguments'''&lt;br /&gt;
&lt;br /&gt;
QuickTest Pro is a test automation tool originally developed by Mercury Interactive and later acquired by [http://en.wikipedia.org/wiki/Hewlett_Packard Hewlett Packard].&amp;lt;ref&amp;gt;http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt; This software offers regression and functional test automation for buisness quality control.&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/a/ncsu.edu/document/d/1XzVu0zEuk7LP4smGZV9lRpSx5-wri6oClpUAmGYPN44/edit# Writeup page.]&lt;br /&gt;
&lt;br /&gt;
=='''Features'''==&lt;br /&gt;
QuickTest Pro is not a command line testing solution. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language.&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
QuickTest allows for both [http://en.wikipedia.org/wiki/Functional_testing functional] and [http://en.wikipedia.org/wiki/Regression_testing regression] testing. It also supports data-driven testing through spreadsheet software, allowing outputs to be recorded and organized.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
QTP has two different views for testing, a keyboard view and an expert view. In keyboard view, users modify tests in a table, one row per step. Users can view output values, set loops, and add breakpoints.&lt;br /&gt;
&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript].&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
QuickTest Pro's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however QTP has a debugger provided by HP.&amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
QuickTest Pro uses recovery scenarios to handle runtime exceptions, this allows testing to be uninterrupted as long as the exception did not affect the memory of the tested application.&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as Cucumber and Capybara run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. QuickTest Pro is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;Engineering Long Lasting Software p136&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
QuickTest Pro is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the QuickTest environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Atmughra</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93563</id>
		<title>CSC/ECE 517 Spring 2015/ch1a 8 AT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93563"/>
		<updated>2015-02-09T20:39:52Z</updated>

		<summary type="html">&lt;p&gt;Atmughra: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atmughra</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93562</id>
		<title>CSC/ECE 517 Spring 2015/ch1a 8 AT</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/ch1a_8_AT&amp;diff=93562"/>
		<updated>2015-02-09T20:39:31Z</updated>

		<summary type="html">&lt;p&gt;Atmughra: Created page with &amp;quot;aaa&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aaa&lt;/div&gt;</summary>
		<author><name>Atmughra</name></author>
	</entry>
</feed>