English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ruby 方法与其他编程语言中的函数类似。Ruby 方法用于捆绑一个或多个重复的语句到一个单元中。
方法名应以小写字母开头。如果您以大写字母作为方法名的开头,Ruby 可能会把它当作常量,从而导致不正确地解析调用。
方法应在调用之前定义,否则 Ruby 会产生未定义的方法调用异常。
def method_name [( [arg [= default]]...[, * arg [, &expr]])] expr.. انتهاء
所以,您可以定义一个简单的方法,如下所示:
def method_name expr.. انتهاء
您可以定义一个接受参数的方法,如下所示:
def method_name (var1, var2) expr.. انتهاء
您可以为参数设置默认值,如果方法调用时未传递必需的参数则使用默认值:
def method_name (var1=value1, var2=value2) expr.. انتهاء
当您要调用方法时,只需要使用方法名即可,如下所示:
method_name
但是,当您调用带参数的方法时,您在写方法名时还要带上参数,例如:
method_name 25, 30
使用带参数方法最大的缺点是调用方法时需要记住参数个数。例如,如果您向一个接受三个参数的方法只传递了两个参数,Ruby 会显示错误。
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test(a1="Ruby", a2="Perl") puts "编程语言为 #{a1}" puts "编程语言为 #{a2}" انتهاء test "C", "C++" test
نتائج تنفيذ هذا المثال هي:
编程语言为 C 编程语言为 C++ 编程语言为 Ruby 编程语言为 Perl
Ruby 中的每个方法默认都会返回一个值。这个返回的值是最后一个语句的值。例如:
def test i = 100 j = 10 k = 0 انتهاء
在调用这个方法时,将返回最后一个声明的变量 k。
Ruby 中的 return 语句用于从 Ruby 方法中返回一个或多个值。
return [expr, 'expr...']
如果给出超过两个的表达式,包含这些值的数组将是返回值。如果未给出表达式,nil 将是返回值。
return أو return 12 أو return 1,2,3
看看下面的示例:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test i = 100 j = 200 k = 300 return i, j, k انتهاء var = test puts var
نتائج تنفيذ هذا المثال هي:
100 200 300
تخيل أن قمت بإعلان دالة تحتوي على معاملين، وعندما تُدعى هذه الدالة، يجب عليك أيضًا تقديم معاملين.
لكن، يسمح Ruby بإعلان دوال تحتوي على عدد متغير من المعاملات. دعونا نرى مثالاً على ذلك:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def sample (*test) puts "عدد المعاملات هو #{test.length}" for i in 0...test.length puts "قيمة المعامل هي #{test[i]}" انتهاء انتهاء sample "Zara", "6", "F" sample "Mac", "36", "M", "MCA"
في هذا الكود، قمت بإعلان دالة sample تأخذ معامل test. ولكن، هذا المعامل هو متغير متعدد. هذا مثال على كيفية تنفيذ هذا النوع من الدوال وتوليد النتائج:
عدد المعاملات هو 3 قيمة المعامل هو Zara قيمة المعامل هو 6 قيمة المعامل هو F عدد المعاملات هو 4 قيمة المعامل هو Mac قيمة المعامل هو 36 قيمة المعامل هو M قيمة المعامل هو MCA
عندما يتم تعريف الدالة خارج الفئة، فإن الرؤية الافتراضية للدالة هي private. من جهة أخرى، إذا تم تعريف الدالة داخل الفئة، فإنها تُعتبر افتراضياً عامة.
الرؤية الافتراضية للدوال private يمكن تحديد الوصول إلى الدوال عبر public أو private التغيير
عندما تريد الوصول إلى دالة الفئة، يجب عليك أولاً تعميم الفئة. ثم، باستخدام الكائن، يمكنك الوصول إلى أي عنصر من الفئة.
يقدم Ruby طريقة للوصول إلى الدوال دون الحاجة إلى إنشاء مثيل للفئة. دعونا نرى كيف يمكن إعلان ووصول إلى الدوال الكلاسيكية:
class Accounts def reading_charge انتهاء def Accounts.return_date انتهاء انتهاء
نحن نعلم كيف يتم إعلان الدالة return_date. يتم إعلانها عن طريق إضافة نقطة بعد اسم الفئة، ثم إضافة اسم الدالة.
Accounts.return_date
لا تحتاج إلى إنشاء كائن من الفئة Accounts للوصول إلى هذه الدالة.
هذا العباره تستخدم لتعريف اسم بديل للمتغيرات العامه او الدوال. لا يمكن تعريف اسم البديل داخل جسم الدالة. حتى لو تم تعديل الدالة، تبقى اسم البديل مرتبطاً بالتعريف الحالي للدالة.
为编号的全局变量($1, $2,...)起别名是被禁止的。重写内置的全局变量可能会导致严重的问题。
النحو alias اسم الطريقة اسم الطريقة
alias العنصر العالمي العنصر العالمي alias foo bar
alias $MATCH $&
الجملةundef هذا الجانب يستخدم لإلغاء تعريف الطريقة.
لا يمكن استخدامها داخل جسم الطريقة. undef و alias، يمكن تعديل واجهة الصف من الصف الأب مستقلاً، ولكن يرجى الانتباه، قد يسبب ذلك تدمير البرنامج عند استدعاء الطريقة من الداخل.
undef اسم الطريقة
إلغاء النaming barتعريف الطريقة:
undef bar