ruby內置全局變量

以下是 Ruby 中常見的 內置全局變量 及其用途的詳細說明。這些變量以 $ 開頭,由 Ruby 解釋器自動管理,用于訪問系統狀態、異常、輸入輸出等核心信息。


一、異常處理相關

全局變量說明示例
$!當前作用域最后拋出的異常對象(等同于 rescue => e 中的 e)。ruby<br>begin<br> 1/0<br>rescue<br> puts $!.message # => "divided by 0"<br>end
$@最后拋出異常的堆棧跟蹤信息(等同 $!.backtrace)。ruby<br>puts $@ # => ["(irb):2:in `/'", "(irb):2:in `<main>'"]
$ERROR_INFO$! 的別名(需 require 'English' 后可用)。

二、輸入輸出相關

全局變量說明示例
$_最后通過 getsreadline 讀取的輸入行(隱式接收輸入內容)。ruby<br>while gets<br> puts $_ # 輸出當前行<br>end
$.當前輸入流的行號(最后一次讀取的行數)。```ruby
File.open(“test.txt”) do
$<當前輸入流(默認是 ARGF,處理多文件輸入時使用)。ruby<br>$<.each_line { |line| puts line }
$>默認輸出流(默認是 $stdout,可重定向)。ruby<br>$> = File.open("output.log", "w")<br>puts "日志內容"

三、進程控制相關

全局變量說明示例
$?最后執行的子進程狀態(Process::Status 對象)。ruby<br>`ls`<br>puts $?.success? # => true
$$當前 Ruby 進程的 PID(進程 ID)。ruby<br>puts $$ # => 12345
$0當前執行的腳本文件名(等同于 __FILE__)。ruby<br>puts $0 # => "script.rb"

四、字符串匹配相關

全局變量說明示例
$~最后一次正則表達式匹配的 MatchData 對象(等同 Regexp.last_match)。ruby<br>"hello" =~ /e/<br>puts $~[0] # => "e"
$&最后一次匹配的完整文本(等同 $~[0])。ruby<br>"abc" =~ /b/<br>puts $& # => "b"
$1, $2...最后一次正則匹配的分組捕獲結果($1 對應第一個分組)。ruby<br>"2023-10-01" =~ /(\d{4})-(\d{2})-(\d{2})/<br>puts $1 # => "2023"

五、其他實用全局變量

全局變量說明示例
$:Ruby 的加載路徑(等同于 $LOAD_PATH)。ruby<br>$: << "/custom/path"
$DEBUG表示是否在調試模式(由 -d--debug 參數啟用)。ruby<br>puts $DEBUG # => false
$FILENAME當前 ARGF 處理的文件名(需 require 'English' 后可用)。
$PROGRAM_NAME當前程序名稱(等同 $0)。

六、注意事項

  1. 可讀性差
    全局變量如 $1$& 等缺乏語義,建議優先使用 MatchData 對象:

    if (match = text.match(/pattern/))puts match[1]
    end
    
  2. 線程安全問題
    全局變量在多線程環境中可能引發競態條件,需謹慎使用。

  3. 部分變量已棄用
    $=(忽略大小寫標志)在 Ruby 1.9+ 中已移除。


七、完整列表(部分)

Ruby 還包含更多內置全局變量,可通過 global_variables 方法查看:

puts global_variables
# => [:$;, $:, $., $<, $>, $0, $DEBUG, ...]

總結

雖然內置全局變量提供了便捷的系統訪問能力,但在實際開發中應 優先使用更明確的替代方案(如顯式異常對象、__FILE__ 常量等),以提升代碼可讀性和可維護性。

— END —

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76308.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76308.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76308.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

tcp轉串口

windows 在 Windows 系統上&#xff0c;可以使用以下成熟的串口轉 TCP 工具&#xff1a; HW VSP3 (HW Virtual Serial Port) 提供串口到 TCP/IP 的映射功能。支持虛擬串口和網絡通信。下載地址&#xff1a;HW Group com0com com2tcp 開源工具&#xff0c;支持虛擬串口和 TCP…

HTML視頻和音頻

<video>元素 <video>元素用于在HTML文檔中嵌入視頻內容。 <video controls><source src"movie.mp4" type"video/mp4"><source src"movie.ogg" type"video/ogg">您的瀏覽器不支持 HTML5 video 標簽。 …

DeepSeek:重構辦公效率的AI新范式

目錄 一、效率躍遷的三重引擎 二、效率提升的量級突破 三、智能辦公的范式轉移 四、未來辦公的效率奇點 當企業主面對堆積如山的文件審批、跨時區協作的溝通損耗、重復機械的數據整理時&#xff0c;是否想過這些場景正在吞噬團隊的生產力&#xff1f;據麥肯錫研究顯示&…

redis 延遲雙刪

Redis延遲雙刪是一種用于解決緩存與數據庫數據一致性問題的策略&#xff0c;通常在高并發場景下使用。以下是其核心內容&#xff1a; 1. 問題背景 當更新數據庫時&#xff0c;如果未及時刪除或更新緩存&#xff0c;可能導致后續讀請求仍從緩存中讀取舊數據&#xff0c;造成數…

Python設計模式:策略模式

1. 什么是策略模式 策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型設計模式&#xff0c;它定義了一系列算法&#xff0c;將每個算法封裝起來&#xff0c;并使它們可以互換。策略模式使得算法的變化獨立于使用算法的客戶。換句話說&#xff0c;策略模式允許在運…

SpringBoot集成Ollama本地模型

SpringBoot集成Ollama本地模型 目錄 項目準備創建Ollama服務客戶端創建控制器配置應用屬性創建前端界面添加靜態資源支持完整項目結構啟動應用高級功能擴展部署注意事項性能優化 1. 項目準備 創建一個SpringBoot項目&#xff0c;可以使用Spring Initializr或IDE創建添加必要…

ResNet改進(19):基于PyTorch的ResNet改進方案詳解:Mish激活+SPP模塊+MixUp數據增強

1. 前言 ResNet作為深度學習領域里程碑式的網絡架構,在圖像分類等計算機視覺任務中表現出色。然而,隨著研究的深入和技術的發展,原始的ResNet架構仍有改進空間。本文將詳細介紹一種基于PyTorch的ResNet改進方案,該方案融合了Mish激活函數、SPP模塊和MixUp數據增強等先進技…

leetcode68.左右文本對齊

思路源自 leetcode-字符串篇 68題 文本左右對齊 難度高的模擬類型題目&#xff0c;關鍵點在于事先知道有多少單詞要放在本行并且還要知道本行是不是最后一行&#xff08;最后一行需要全部單空格右對齊&#xff0c;不是最后一行就空格均攤&#xff09;&#xff0c;非最后一行的空…

深入理解 Spring 的 MethodParameter 類

MethodParameter 是 Spring 框架中一個非常重要的類&#xff0c;它封裝了方法參數&#xff08;或返回類型&#xff09;的元數據信息。這個類在 Spring MVC、AOP、數據綁定等多個模塊中都有廣泛應用。 核心功能 MethodParameter 主要提供以下功能&#xff1a; 獲取參數類型信息…

Qt 5.14.2入門(一)寫個Hello Qt!程序

目錄 參考鏈接&#xff1a;一、新建項目二、直接運行三、修改代碼增加窗口內容1、Qt 顯示一個 QLabel 標簽控件窗口2、添加按鍵 參考鏈接&#xff1a; Qt5教程&#xff08;一&#xff09;&#xff1a;Hello World 程序 Qt 編程指南 一、新建項目 1、新建一個項目&#xff08…

Spring Boot 3.x 集成 MongoDB 的 默認配置項及默認值,以及 常用需要修改的配置項 的詳細說明

以下是 Spring Boot 3.x 集成 MongoDB 的 默認配置項及默認值&#xff0c;以及 常用需要修改的配置項 的詳細說明&#xff1a; 一、默認配置項及默認值 Spring Boot 對 MongoDB 的默認配置基于 spring.data.mongodb 前綴&#xff0c;以下是核心配置項&#xff1a; 配置項默認…

【QT】 進程

目錄 QT 多進程復習 Linux-C 多進程QProcess 進程類常用方法簡單示例信號與槽應用場景 跨平臺注意事項技巧&#xff1a;使用宏控制平臺命令 QProcess 在嵌入式系統中的使用示例&#xff1a;調用 ALSA 播放音頻示例&#xff1a;調用 arecord 錄音示例&#xff1a;QProcess Shel…

原子操作(cpp atomic)

目錄 一.原子操作 1.原子操作的概念 2.原子變量 二.原子性 1.中間狀態描述 2.單處理器單核 3.多處理器或多核的情況下 4.cache&#xff08;高速緩沖器的作用&#xff09; 5.在cpu cache基礎上,cpu如何讀寫數據&#xff1f;&#xff1f;&#xff1f; 6.為什么會有緩存…

Unet網絡的Pytorch實現和matlab實現

文章目錄 一、Unet網絡簡介1.1 輸入圖像1.2 編碼器部分&#xff08;Contracting Path&#xff09;1.3 解碼器部分&#xff08;Expanding Path&#xff09;1.4 最后一層&#xff08;輸出&#xff09;1.5 跳躍連接&#xff08;Skip Connections&#xff09; 二、Unet網絡的Pytorc…

記錄一次JVM調優過程1

如何通過jmap 診斷&#xff0c;服務運行一段時間后內存使用量飆升的問題 通過 jmap 診斷服務運行一段時間后內存使用量飆升的問題&#xff0c;需結合堆轉儲分析、對象分布統計及工具鏈配合。以下是具體操作步驟和關鍵方法&#xff1a; 一、實時監控與初步分析 獲取進程 PID 使…

接口自動化學習五:mock工具使用

Moco簡介&#xff1a; Mock是一個簡單搭建模擬服務器的框架&#xff0c;可以用來模擬http、https、socket等協議。 原理&#xff1a; Mock會根據一些配置&#xff0c;啟動一個真正的HTTP服務&#xff08;會監聽本地的某個端口&#xff09;,當發起的請求滿足某個條件時&#xf…

若依 前后端部署

后端&#xff1a;直接把代碼從gitee上拉去到本地目錄 (https://gitee.com/y_project/RuoYi-Vue ) 注意下redis連接時password改auth 后端啟動成功 前端&#xff1a;運行前首先確保安裝了node環境&#xff0c;隨后執行&#xff1a; &#xff01;&#xff01;一定要用管理員權限…

Adaptive AUTOSAR 狀態管理和轉換——ActionItemList

在AUTOSAR的狀態轉換管理(STM,State Transition Manager) 框架中,ActionItemList 是連接 狀態機狀態(State Machine State) 與 功能組狀態(Function Group States) 的核心配置元素。 以下是其關系與作用的詳細解釋: 1. 核心概念 狀態機狀態(State Machine State) 表…

一個基于ragflow的工業文檔智能解析和問答系統

工業復雜文檔解析系統 一個基于ragflow的工業文檔智能解析和問答系統,支持多種文檔格式的解析、知識庫管理和智能問答功能。 系統功能 1. 文檔管理 支持多種格式文檔上傳(PDF、Word、Excel、PPT、圖片等)文檔自動解析和分塊處理實時處理進度顯示文檔解析結果預覽批量文檔…

linux系統下如何提交git和調試

我們默認的ubuntu20.04鏡像是沒有Git提交的工具&#xff0c;我們需要配置安裝包。 安裝和更新git的命令 sudo apt update //用于更新軟件包索引sudo apt install git //用于安裝git版本控制工具 git --version //檢查git版本,確認是否安裝成功 隨便進入linux系統下的一…