English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby 基础教程

Ruby 高级教程

الطرق في Ruby

Ruby 方法与其他编程语言中的函数类似。Ruby 方法用于捆绑一个或多个重复的语句到一个单元中。

方法名应以小写字母开头。如果您以大写字母作为方法名的开头,Ruby 可能会把它当作常量,从而导致不正确地解析调用。

方法应在调用之前定义,否则 Ruby 会产生未定义的方法调用异常。

منع تسمية العنصر العالمي المعدد (1, 2، ...) كـ alias ممنوع. قد يؤدي تعديل العنصر العالمي الداخلي إلى مشاكل خطيرة.}

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。

في هذا السياق، قمنا بتعريف alias foo كـ bar، وalias $& كـ $MATCH. return Ruby

Ruby 中的 return 语句用于从 Ruby 方法中返回一个或多个值。

منع تسمية العنصر العالمي المعدد (1, 2، ...) كـ alias ممنوع. قد يؤدي تعديل العنصر العالمي الداخلي إلى مشاكل خطيرة.}

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 للوصول إلى هذه الدالة.

في هذا السياق، قمنا بتعريف alias foo كـ bar، وalias $& كـ $MATCH. alias Ruby

هذا العباره تستخدم لتعريف اسم بديل للمتغيرات العامه او الدوال. لا يمكن تعريف اسم البديل داخل جسم الدالة. حتى لو تم تعديل الدالة، تبقى اسم البديل مرتبطاً بالتعريف الحالي للدالة.

为编号的全局变量($1, $2,...)起别名是被禁止的。重写内置的全局变量可能会导致严重的问题。

منع تسمية العنصر العالمي المعدد (1, 2، ...) كـ alias ممنوع. قد يؤدي تعديل العنصر العالمي الداخلي إلى مشاكل خطيرة.}

النحو
alias اسم الطريقة اسم الطريقة

مثال على الخطوة

alias العنصر العالمي العنصر العالمي
alias foo bar

alias $MATCH $&

في هذا السياق، قمنا بتعريف alias foo كـ bar، وalias $& كـ $MATCH. undef Ruby

الجملةundef هذا الجانب يستخدم لإلغاء تعريف الطريقة.

لا يمكن استخدامها داخل جسم الطريقة. undef و alias، يمكن تعديل واجهة الصف من الصف الأب مستقلاً، ولكن يرجى الانتباه، قد يسبب ذلك تدمير البرنامج عند استدعاء الطريقة من الداخل.

undef اسم الطريقة

مثال على الخطوة

إلغاء النaming barتعريف الطريقة:

undef bar